Wenn ich versuche, eine Methode zu testen, die ein Tupel zurückgibt, und ich versuche herauszufinden, ob der Code auf den richtigen Tupel-Index zugreift, versucht Python, den erwarteten Aufruf auszuwerten und in eine Zeichenkette umzuwandeln.
call().methodA().__getitem__(0)
wird in '().methodA'
umgewandelt
in meiner expected_calls
Liste für die Behauptung.
Der angegebene Beispielcode führt zur Ausgabe und zur Rückverfolgung:
%Vor%Wie gehe ich vor, um diese Methode zu bestätigen? self.tbm.methodA () [0] richtig?
Beispielcode (Python 3.3.2):
%Vor% Um auf mock_object.account['xxx1'].patch(body={'status': 'active'})
zu testen
Ich musste den Test verwenden:
Ich kann nicht erklären, warum das funktioniert, das sieht nach merkwürdigem Verhalten aus, möglicherweise ein Fehler im Mock, aber ich bekomme diese Ergebnisse immer und es funktioniert.
Ich bin gerade auf dasselbe Problem gestoßen. Ich habe die Lösung / Work-Around von hier aus verwendet:
nämlich:
%Vor%Sie können die Fehlinterpretation der Zauberfunktionsnamen überspringen und mit ihren Argumenten überprüfen.
Tags und Links python unit-testing python-3.x automated-tests mocking