Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
python:pytest [2024/02/23 16:07] root |
python:pytest [2024/02/23 19:04] (aktuell) root |
||
---|---|---|---|
Zeile 10: | Zeile 10: | ||
+ | ====== Mocking ====== | ||
+ | |||
+ | ===== Wo gemocked werden muss ===== | ||
+ | * Muss an der Stelle durchgeführt werden wo das Objekt aus Sicht des zu testenden Objektes im Namensraum auftaucht | ||
+ | |||
+ | <sxh python> | ||
+ | # in mymodule | ||
+ | |||
+ | import somemodule | ||
+ | |||
+ | somemodule.a() | ||
+ | </ | ||
+ | |||
+ | * Um a zu mocken muss somemodule.a gemockt werden | ||
+ | * in diesem Fall fallen Definitionsort und der Namensraum zusammen | ||
+ | |||
+ | Wenn hingegen | ||
+ | |||
+ | <sxh python> | ||
+ | # in mymodule | ||
+ | |||
+ | from somemodule import a | ||
+ | |||
+ | a() | ||
+ | </ | ||
+ | |||
+ | * muss mymodule.a gemockt werden | ||
+ | * der Namensraum an den a() gebunden ist ist mymodule | ||
+ | * a() ist an sich aber (original) in somemodule definiert | ||
+ | |||
+ | |||
+ | ===== | ||
====== Begriffe ====== | ====== Begriffe ====== | ||
+ | |||
+ | * Gute Erklärung: https:// | ||
===== Fixture ===== | ===== Fixture ===== | ||
Zeile 21: | Zeile 55: | ||
- | ===== Mock ===== | + | ===== Mock - generell |
Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/ | Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/ | ||
Zeile 30: | Zeile 64: | ||
* Klassen Attribute haben feste Werte | * Klassen Attribute haben feste Werte | ||
+ | |||
+ | ===== Dummies ===== | ||
+ | |||
+ | Objekte (was letztendlich auch primitive Datentypen inkludiert) die übergeben werden müssen, aber keinen Einfluss auf das zu testende Objekt haben. \\ | ||
+ | Zum Beispiel Parameter die zum instanzieren einer Klassen nötig sind, aber das Objekt was getestet wird ist eine Funktion der Klasse, die durch eben jenenen Parameter nicht beeinflusst wird/nicht davon abhängt. \\ | ||
+ | Die Klasse ließe sich nur ohne den Parameter nicht instanzieren. | ||
+ | |||
+ | |||
+ | ===== Fake ===== | ||
+ | |||
+ | Implementiert eine Methode oder Klasse die wirklich funktioniert (also wirklich etwas tut), das aber in der Regel auf eine verkürzte Weise tut wie das Original | ||
+ | |||
+ | |||
+ | ===== Stubs ===== | ||
+ | |||
+ | Gibt hart kodierte Rückgabewerte zurück. | ||
+ | |||
+ | |||
+ | ===== Mocks ===== | ||
+ | |||
+ | Zeichnen zusätzlich zu Stubs auf was die Aufruparameter waren. | ||
+ | |||
+ | |||
+ | ===== Spies ===== | ||
+ | |||
+ | Wrapper um das Originalobjekt welches aufgerufen werden soll. | ||
+ | Zeichnet nur die Parameter auf mit denen das Objekt aufgerufen wurde. |