#35840: assertFormError shows error when testing form input
-------------------------------------+-------------------------------------
Reporter: KevinS | Type: Bug
Status: new | Component: Testing
| framework
Version: 5.1 | Severity: Normal
Keywords: UnitTest, Form | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Hi all,
I was encountering some issue using the `self.assertFormError` to test a
simple form input.
Not sure why it keeps giving me the following error; I thought once the
form is posted, it should be bound.
`forms.py`
{{{#!python
class Form_Test(forms.Form):
name = forms.CharField(max_length=20)
integer = forms.IntegerField()
def clean_integer(self):
c = self.cleaned_data['integer']
if c < 10:
self.add_error(
field='integer',
error='Must be bigger than 10'
)
else:
return c
}}}
`views.py`
{{{#!python
def FormTest(request):
if request.method == 'POST':
form = Form_Test(request.POST)
if form.is_valid():
print('Hello World')
else:
form = Form_Test()
return render(request, 'basic_form.html', context={'form': form})
}}}
`urls.py ==> path('test-form/', views.FormTest, name='test_form'),`
`test_views.py`
{{{#!python
from django.test import TestCase,
from django.contrib.auth.models import User
from django.urls import reverse
from ChurchAccount.forms import Form_Test
class AuthViewsTest(TestCase):
def setUp(self):
self.form_url = reverse('test_form')
def test_form_test(self):
response = self.client.post(self.form_url, data={'name':
'abc','integer': 2})
self.assertFormError(response, 'form', 'integer', 'Must be bigger
than 10')
self.assertEqual(response.status_code, 200)
....
}}}
{{{#!zsh
======================================================================
ERROR: test_form_test
(ChurchAccount.tests.test_views.AuthViewsTest.test_form_test)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"/Development/Church/ChurchSite5/ChurchAccount/tests/test_views.py", line
107, in test_form_test
self.assertFormError(response, 'form', 'integer', 'Must be bigger than
10')
File "/.pyenv/versions/3.12.7/envs/web-dev/lib/python3.12/site-
packages/django/test/testcases.py", line 698, in assertFormError
self._assert_form_error(form, field, errors, msg_prefix, f"form
{form!r}")
File "/.pyenv/versions/3.12.7/envs/web-dev/lib/python3.12/site-
packages/django/test/testcases.py", line 664, in _assert_form_error
if not form.is_bound:
^^^^^^^^^^^^^
AttributeError: 'HttpResponse' object has no attribute 'is_bound'
----------------------------------------------------------------------
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35840>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/010701928ef64769-fed432f6-2a7f-4b63-964b-5212f77895dd-000000%40eu-central-1.amazonses.com.