#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.

Reply via email to