Как написать тесты для форм в Django?
Я хотел бы моделировать запросы к моим представлениям в Django, когда я пишу тесты. Это в основном для проверки форм. Вот фрагмент простого тестового запроса:
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
Страница всегда возвращает ответ 200, есть ли ошибка формы или нет. Как я могу проверить, что моя форма не удалась, и что в конкретном поле (soemthing
) была ошибка?
Ответы
Ответ 1
Я думаю, что если вы просто хотите протестировать форму, вам нужно просто протестировать форму, а не представление, в котором визуализируется форма. Пример получения идеи:
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
Ответ 2
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.')
Где "форма" - это имя переменной контекста для вашей формы, "что-то" - это имя поля и "Это поле обязательно". - это точный текст ожидаемой ошибки проверки.
Ответ 3
self.assertContains(response, "Invalid message here", 1, 200)