Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
python:pytest [2024/02/23 15:43] root |
python:pytest [2024/02/23 19:04] (aktuell) root |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | * Fixture | + | |
- | * Im Prinzip die Testumgebung bzw. jedes Teil davon | + | |
- | * im Sinne von Fix -> Fest, eine feste/ | + | |
- | * darunter fallen Funktionen/ | + | |
* Tests können in Klassen zusammengefasst werden | * Tests können in Klassen zusammengefasst werden | ||
* müssen Test< | * müssen Test< | ||
Zeile 10: | Zeile 8: | ||
* jeder ausgührte Test hat eine eigene Instanz der Klasse | * jeder ausgührte Test hat eine eigene Instanz der Klasse | ||
* das setzen von Variablen in einem Test beeinflusst also nicht die Ausführung in einem anderen Test | * das setzen von Variablen in einem Test beeinflusst also nicht die Ausführung in einem anderen Test | ||
+ | |||
+ | |||
+ | ====== 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 ====== | ||
+ | |||
+ | * Gute Erklärung: https:// | ||
+ | |||
+ | ===== Fixture ===== | ||
+ | |||
+ | * Im Prinzip die Testumgebung bzw. jedes Teil davon | ||
+ | * im Sinne von Fix -> Fest, eine feste/ | ||
+ | * darunter fallen Funktionen/ | ||
+ | * auch Mocks von Funktionsaufrufen und API-Calls | ||
+ | |||
+ | |||
+ | ===== Mock - generell ===== | ||
+ | |||
+ | Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/ | ||
+ | Das ist eine zusätzliche Quelle von Fehlern (da eben diese sich bereits falsch verhalten können) und ggf. " | ||
+ | |||
+ | |||
+ | * Funktionen geben einen definierten Rückgabewert zurück | ||
+ | * 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. |