tipos personalizados formularios ejemplos avanzados python django django-testing

python - personalizados - model forms django



¿Cómo debo escribir pruebas para formularios en Django? (3)

Me gustaría simular las solicitudes a mis puntos de vista 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 si hay un error en el formulario o no. ¿Cómo puedo verificar que mi formulario falló y que el campo en particular ( soemthing ) tuvo un error?


Creo que si solo quiere probar el formulario, simplemente debe probar el formulario y no la vista donde se representa el formulario. Ejemplo para tener una idea:

from django.test import TestCase from myapp.forms import MyForm class MyTests(TestCase): def test_forms(self): form_data = {''something'': ''something''} form = MyForm(data=form_data) self.assertTrue(form.is_valid()) ... # other tests relating forms, for example checking the form data



https://docs.djangoproject.com/en/stable/topics/testing/tools/#django.test.SimpleTestCase.assertFormError

from django.tests import TestCase class MyTests(TestCase): def test_forms(self): response = self.client.post("/my/form/", {''something'':''something''}) self.assertFormError(response, ''form'', ''something'', ''This field is required.'')

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.