Performance: Testing forms
Testing forms affects development speed and server response time during test runs, impacting developer feedback loop and CI pipeline efficiency.
Jump into concepts and practice - no test required
def test_form_validation(self): form = MyForm(data={'field1': 'value1', 'field2': 'value2'}) self.assertTrue(form.is_valid()) # No HTTP request, no DB writes
def test_form_submission(self): form = MyForm(data={'field1': 'value1', 'field2': 'value2'}) self.assertTrue(form.is_valid()) response = self.client.post('/submit/', data=form.cleaned_data) self.assertEqual(response.status_code, 200)
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Direct form validation testing | 0 (no DOM) | 0 | 0 | [OK] Good |
| Full HTTP form submission test | N/A (server-side) | N/A | N/A | [X] Bad |
form.is_valid() method do in Django form testing?form.is_valid()form.is_valid() returnsTrue if all data is valid, otherwise False. It does not save or clear data.MyForm(request.POST).data=, incorrect for POST. form = MyForm(request.POST) correctly passes request.POST as the first argument. form = MyForm() creates an empty form without data.print(form.errors) output if the 'email' field is missing?data = {'name': 'Alice'}
form = ContactForm(data)
form.is_valid()
print(form.errors)form.is_valid() returns False and form.errors contains an error message for that field.form = MyForm() form.is_valid() print(form.errors)
form.errors always be empty here?form.is_valid() returns False but form.errors is empty because no fields were checked against input data.form.is_valid() and check form.errors contains errors for both fields.