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,
DoesNotExistes una propiedad del modelo en sí, en este casoAnswer.Su problema es que está llamando al
getmé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, congetargumentos 's añadido como args kw individuales, no dentro de una().withsolución funcionó para mí.También puede importar
ObjectDoesNotExistdesdedjango.core.exceptions, si desea una forma genérica e independiente del modelo para detectar la excepción:fuente
DoesNotExistsiempre 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
assertRaisesdebe 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