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