Ich stoße auf das folgende seltsame Problem:
Ich entwickle eine Django-App und in meiner Model-Klasse definiere ich eine Ausnahme, die ausgelöst werden sollte, wenn eine Validierung fehlschlägt:
%Vor%Dieser Code wird von einer Veröffentlichungsklasse in einer Validierungsmethode aufgerufen:
%Vor%In meinem Komponententest erstelle ich einen Fall, in dem die Ausnahme ausgelöst werden sollte:
%Vor%Dies erzeugt die folgende Ausgabe:
%Vor%Es sieht so aus, als ob die Ausnahme ausgelöst wird (was der Fall ist - ich habe es sogar in einer interaktiven IPython-Sitzung überprüft), aber es scheint, dass assertRaises es nicht abfängt.
Hat jemand eine Idee, warum das passieren könnte?
Danke
Dies kann passieren, wenn Ihre Tests und Ihr Produktcode Ihre Ausnahmeklasse über zwei verschiedene Pfade importiert, so dass asserRaises nicht erkennt, dass die Ausnahme, die Sie bekommen haben, diejenige war, nach der Sie gesucht haben.
Schauen Sie sich Ihre Importe an, stellen Sie sicher, dass sie an beiden Orten gleich sind. Wenn Sie die gleichen Verzeichnisse auf zwei verschiedene Arten in Ihrem PYTHONPATH zur Verfügung haben, können Sie dies erreichen. Symbolische Links in diesen Einträgen können auch die Dinge verwirren.
Tags und Links python django unit-testing