Estoy tratando de crear un UnitTest para verificar que se haya eliminado un objeto.
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>'))
Sigo recibiendo el error:
DoesNotExist: Answer matching query does not exist.
django
unit-testing
exception
BryanWheelock
fuente
fuente
Respuestas:
No necesita importarlo, como ya ha escrito correctamente,
DoesNotExist
es una propiedad del modelo en sí, en este casoAnswer
.Su problema es que está llamando al
get
método, que genera la excepción, antes de pasarloassertRaises
. Debe separar los argumentos del invocable, como se describe en la documentación de la prueba de unidad :o mejor:
fuente
self.assertRaises(Answer.DoesNotExist, Answer.objects.get, body__exact = '<p>User can reply to discussion.</p>')
- es decir, conget
argumentos 's añadido como args kw individuales, no dentro de una()
.with
solución funcionó para mí.También puede importar
ObjectDoesNotExist
desdedjango.core.exceptions
, si desea una forma genérica e independiente del modelo para detectar la excepción:fuente
DoesNotExist
siempre es una propiedad del modelo que no existe. En este caso lo seríaAnswer.DoesNotExist
.fuente
Una cosa a tener en cuenta es que el segundo parámetro
assertRaises
debe ser invocable, no solo una propiedad. Por ejemplo, tuve dificultades con esta declaración:pero esto funcionó bien:
fuente
fuente
Así es como hago esa prueba.
fuente