Ich versuche, einen UnitTest zu erstellen, um zu überprüfen, ob ein Objekt gelöscht wurde.
from django.utils import unittest
def test_z_Kallie_can_delete_discussion_response(self):
...snip...
self._driver.get("http://localhost:8000/questions/3/want-a-discussion")
self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>'))
Ich bekomme immer wieder den Fehler:
DoesNotExist: Answer matching query does not exist.
django
unit-testing
exception
BryanWheelock
quelle
quelle
Antworten:
Sie müssen es nicht importieren - wie Sie bereits richtig geschrieben haben,
DoesNotExist
ist es in diesem Fall eine Eigenschaft des Modells selbstAnswer
.Ihr Problem ist, dass Sie die
get
Methode aufrufen , wodurch die Ausnahme ausgelöst wird, bevor sie an übergeben wirdassertRaises
. Sie müssen die Argumente vom aufrufbaren trennen, wie in der unittest-Dokumentation beschrieben :oder besser:
quelle
self.assertRaises(Answer.DoesNotExist, Answer.objects.get, body__exact = '<p>User can reply to discussion.</p>')
- dh mitget
's Argumenten als einzelne kw-Argumente hinzugefügt werden, nicht innerhalb von a()
.with
Lösung hat bei mir funktioniert.Sie können auch importieren
ObjectDoesNotExist
ausdjango.core.exceptions
, wenn Sie möchten , eine generische, modellunabhängige Möglichkeit , die Ausnahme zu fangen:quelle
DoesNotExist
ist immer eine Eigenschaft des Modells, die nicht existiert. In diesem Fall wäre esAnswer.DoesNotExist
.quelle
Eine Sache, auf die Sie achten müssen, ist, dass der zweite Parameter ein aufrufbarer Parameter sein
assertRaises
muss - nicht nur eine Eigenschaft. Zum Beispiel hatte ich Schwierigkeiten mit dieser Aussage:aber das hat gut funktioniert:
quelle
quelle
So mache ich einen solchen Test.
quelle