Ich habe Probleme mit Python Mock und bin verrückt geworden. Ich habe diese Frage wegen der Angst davor abgelehnt, für zu wenig Forschung zu stimmen. Ich habe in der letzten Woche insgesamt 24 Stunden damit zu tun, herauszufinden, wie man diese Arbeit bekommt und kann nicht.
Ich habe zahlreiche Beispiele gelesen und diese aus diesen erstellt. Ich weiß, Mock-Objekte sollen einfach zu bedienen sein, aber das hat zu lange gedauert. Jetzt habe ich keine Zeit mehr.
Ich versuche hier zwei einfache Dinge zu tun:
1. Überschreiben Sie den Statuscode request.ok in einer anderen Funktion.
2. Veranlassen Sie, dass eine urllib2.HTTPError-Ausnahme ausgelöst wird
Ich habe diese zwei Aufgaben in das einfachste mögliche Beispiel für Ihre Bequemlichkeit destilliert:
%Vor%und
%Vor%Ein normaler Aufruf von hallo_world () gibt aus:
%Vor%Ein normaler Aufruf von test_function_try () gibt aus:
%Vor%Ein normaler Aufruf von test_function_exception () gibt Folgendes aus:
%Vor%Offensichtlich gebe ich tatsächlich nichts von hallo_world () zurück, so dass es so aussieht, als ob das gepatchte Objekt die hello_world () Funktion ist anstatt der Anfragen oder urllib2 gepatchten Module.
Es sollte angemerkt werden, dass wenn ich versuche, mit 'ExampleModule.hello_world.requests' oder 'ExampleModule.hello_world.urllib2' zu patchen, eine Fehlermeldung erscheint, dass sie nicht in hello_world ()
gefunden werden könnenFRAGE ZUSAMMENFASSUNG
AKTUALISIEREN
Nach dem Ändern des Patch-Ziels in die requests.request () - Funktion, wie nach @ chepners Vorschlag, erhalte ich die folgende Ausgabe:
%Vor%Tags und Links python unit-testing mocking