Me gustaría simular solicitudes a mis vistas en Django cuando estoy escribiendo pruebas. Esto es principalmente para probar los formularios. Aquí hay un fragmento de una solicitud de prueba simple:
from django.tests import TestCase
class MyTests(TestCase):
def test_forms(self):
response = self.client.post("/my/form/", {'something':'something'})
self.assertEqual(response.status_code, 200) # we get our page back with an error
La página siempre devuelve una respuesta de 200, ya sea que haya un error de formulario o no. ¿Cómo puedo comprobar que mi formulario falló y que el campo en particular ( soemthing
) tuvo un error?
python
django
django-testing
Mridang Agarwalla
fuente
fuente
self.assertEquals(form.errors['recipient'], [u"That recipient isn't valid"])
self.assertEqual(form.is_valid(), True)
podría simplificarse:self.assertTrue(form.is_valid())
https://docs.djangoproject.com/en/stable/topics/testing/tools/#django.test.SimpleTestCase.assertFormError
Donde "formulario" es el nombre de la variable de contexto para su formulario, "algo" es el nombre del campo y "Este campo es obligatorio". es el texto exacto del error de validación esperado.
fuente
self.client.force_login(self.user)
como primera línea en el método de prueba.La respuesta original de 2011 fue
Pero veo ahora (2018) que hay una gran cantidad de afirmaciones aplicables disponibles :
Elige tu opción.
fuente