Kursinhalt
Python Fortgeschrittene Konzepte
Python Fortgeschrittene Konzepte
Mocking im Detail
Im vorherigen Kapitel haben wir die Bedeutung der Verwendung von Mock beim Testen gesehen. Jetzt werfen wir einen genaueren Blick auf die verschiedenen Fähigkeiten und klären alle Aspekte, die unklar waren.
Einführung in MagicMock
MagicMock ist eine unglaublich vielseitige Implementierung von Mock, die magische Methoden unterstützt. Sie können es verwenden, um das Verhalten komplexer Objekte in Ihren Tests nachzuahmen, wie wir im vorherigen Kapitel gesehen haben.
In diesem Beispiel wird MagicMock verwendet, um die Methode get_account_balance
zu simulieren, die normalerweise Daten aus einer Datenbank abrufen würde.
Verwendung von mock.patch
@mock.patch wird verwendet, um die tatsächlichen Implementierungen von Objekten in Ihrem Code vorübergehend zu ersetzen.
Stellen Sie sich eine Funktion vor, die Benutzeranmeldeinformationen gegen eine Datenbank überprüft. Sie können mock.patch verwenden, um zu vermeiden, die tatsächliche Datenbank zu treffen:
Mocking mit Context Manager
Manchmal ist es vorzuziehen, patch() als Context Manager anstelle eines Dekorators zu verwenden, insbesondere wenn:
- Sie ein Objekt nur für einen Teil des Tests mocken müssen;
- oder wenn übermäßiger Gebrauch von Dekoratoren oder Parametern die Klarheit Ihrer Tests verringert.
Pytest Monkey Patch
Das monkeypatch-Fixture in Pytest ermöglicht es Ihnen, Klassen, Module oder Umgebungen während eines Tests vorübergehend zu ändern.
Das monkeypatch-Fixture ermöglicht es Ihnen, die Umgebung während des Tests sicher zu ändern und zu verwalten, ohne Nebenwirkungen außerhalb des Testbereichs zu verursachen.
1. Welcher der folgenden Code-Snippets mockt die Methode get_balance korrekt, um 500 zurückzugeben?
2. Was überprüft der folgende Test?
Danke für Ihr Feedback!