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. | ||