﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
35840	assertFormError shows error when testing form input	KevinS		"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'

----------------------------------------------------------------------

}}}

"	Bug	closed	Testing framework	5.1	Normal	invalid			Unreviewed	0	0	0	0	0	0
