AssertRaises schlägt fehl, obwohl eine Ausnahme ausgelöst wird

8

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

    
BergmannF 07.08.2011, 12:14
quelle

1 Antwort

6

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.

    
Ned Batchelder 07.08.2011, 12:18
quelle

Tags und Links