Wie um zu testen, ob eine Funktion aufgerufen wird eine Funktion mit nosetests
Ich versuche, einige automatische unit-Tests für ein Projekt. Ich habe einige Funktionen, die als Nebenwirkung gelegentlich eine andere Funktion aufrufen. Ich möchte schreiben Sie einen unit-test, die tests, dass die zweite Funktion wird aufgerufen, aber da bin ich überfragt. Unten ist pseudocode Beispiel:
def a(self):
data = self.get()
if len(data) > 3500:
self.b()
# Bunch of other magic, which is easy to test.
def b(self):
serial.write("\x00\x01\x02")
Wie kann ich testen, dass b()
-aufgerufen wird?
InformationsquelleAutor msvalkon | 2013-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verhöhnen die Funktion
b
mit mock Modul und prüfen Sie, ob es genannt wurde. Hier ist ein Beispiel:Siehe auch:
Hoffe, das hilft.
b
schreibt Sachen an die serielle Schnittstelle, ich würde sagen, dass Sie muss Modell es in einem unit-test.Vielen Dank, das ist genau, was ich tun muss.
InformationsquelleAutor alecxe
Verschiedene Lösungen sind möglich für diese Sache. Aber zuerst muss ich Sie darauf hinweisen, dass unit-Tests ist gedacht für Test-Einheiten, was eine Einheit ist eine Frage der Betrachtung der Dinge. In deinem Fall würde ich sagen: eine Einheit ist die Funktion
a()
weil Sie testen möchten, dass Ihr Gerät verhält sich korrekt, das heißt, es ruft die Funktionb()
an der richtigen Stelle. Eine andere Ansicht wäre, zu sagen, dass die Funktionena()
undb()
sind eine Einheit. Dann machst du nicht wie um zu überprüfen, ob die Funktionb()
aufgerufen wird, Sie wollen einfach nur, um zu testen, mit dem Ergebnis des Aufrufs der Funktiona()
. So make up your mind, was für Ihren Fall am besten.In den Fall, Sie wirklich wollen, um die test-Funktion
a()
als eine Einheit, sollten Sie vorbereiten Ihre Einheit getestet werden. In Ihrem Fall getan werden könnte, indem es ein zusätzliches argument (Standardwert Funktionb
) und die verwendet werden, statt die hart codierte Funktionb()
Anruf ina()
:Jetzt können Sie Spritzen (während der Prüfung) eine Hilfsfunktion, die nur informiert der test, dass es wurde genannt:
InformationsquelleAutor Alfe