Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:pytest

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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()
 +</sxh>
 +
 +  * 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()
 +</sxh>
 +
 +  * 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://alpopkes.com/posts/python/mocking/
  
 ===== Fixture ===== ===== Fixture =====
Zeile 21: Zeile 55:
  
  
-===== Mock =====+===== Mock - generell =====
  
 Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/Konstanten oder Attribute von Klassen ab um ihre Arbeit zu tun.\\ Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/Konstanten oder Attribute von Klassen ab um ihre Arbeit zu tun.\\
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.
python/pytest.1708700836.txt.gz · Zuletzt geändert: 2024/02/23 16:07 von root