Mock

In diesem Kapitel werden wir die CLI testen. Hierfür werden wir die mock-Bibliothek verwenden, das seit Python 3.3 als Teil der Python-Standardbibliothek unter dem Namen unittest.mock ausgeliefert wird.

Objekte, die nicht real sind, können entweder Dummies, Fakes, Stubs, Mocks oder Spies sein. Sie sind alle sog. Test-Doubles. Mit dem pytest-eigenen monkeypatch-Fixture und unittest.mock solltet ihr jedoch über alle Funktionen verfügen, die ihr benötigt.

Die drei Kernfunktionalitäten von unittest.mock sind:

Mock

Die Mock-Klasse kann zur Simulation eines beliebigen Objekts verwendet werden.

MagickMock

Unterklasse von Mock, die alle magischen Methoden enthält, z. B. __str__, __len__ usw.

patch-Methode

In einem bestimmten Modul wird ein Objekt gesucht und ersetzt durch ein anderes Objekt.

Wir werden uns im Folgenden das Mocking von Rückgabewerten, die Überprüfen von Mock-Funktionen-Aufrufen von und das Mocking von Exceptions anschauen. Es gibt jedoch noch eine ganze Reihe weiterer Mocking-Techniken, die wir nicht behandeln werden. Lest also unbedingt unittest.mock — mock object library, wenn ihr Mocking ausgiebig nutzen möchtet.