嘲笑姜戈 表单cleaned_data字段



我有一个简单的django形式,如下所示:

class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)

我的观点是这样使用它的:

def my_view(request):
form = ContactForm(request.POST)
if form.is_valid():
data = form.cleaned_data
...

我想测试我的观点,并不关心表单的实际作用。这就是到目前为止我的测试的样子

@patch.object(ContactForm, 'is_valid')
def test_my_view(mock_is_valid):
is_valid.return_value = True
...
assert response.status_code == 201

但是,这不起作用,因为在调用form.is_valid()之前不会设置form.cleaned_data。如果form.cleaned_data属性一开始就不存在,我该如何模拟它?

您可以模拟整个表单类,而不仅仅是一种方法:

@patch('myapp.views.ContactForm')
def test_my_view(mock_form_class):
mock_form_class.return_value.is_valid = True
mock_form_class.return_value.cleaned_data = {}
...
assert response.status_code == 201

需要将myapp.views替换为指向应用views模块的虚线路径的位置。它假设您将ContactForm导入该模块,例如,使用from .forms import ContactForm.

相关内容

  • 没有找到相关文章

最新更新