# in mymodule import somemodule somemodule.a()
Wenn hingegen
# in mymodule from somemodule import a a()
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.
Das ist eine zusätzliche Quelle von Fehlern (da eben diese sich bereits falsch verhalten können) und ggf. „kostenintensiv“ (im Sinne von Rechenleistung und RAM oder Ausführungszeit oder aufwendiger Aufbau nötig).
Um diesen Aufwand zu sparen benutzt man Mocks, im Prinzip Simulationen oder Kartonage-Abbilder die nur die relevanten Werte zurückgeben ohne wirklich irgendwelchen Code auszuführen.
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.
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
Gibt hart kodierte Rückgabewerte zurück.
Zeichnen zusätzlich zu Stubs auf was die Aufruparameter waren.
Wrapper um das Originalobjekt welches aufgerufen werden soll. Zeichnet nur die Parameter auf mit denen das Objekt aufgerufen wurde.