0

因此,我向用户显示了一个复选框,您可以在我的forms.py文件中看到:

class AddFooToBarForm(forms.Form):
    to_original = forms.BooleanField(initial=True,
                                     error_messages={'required':
                                                         "Oh no! How do I fix?"})
    ...

根据用户是选中还是取消选中该复选框,我会做一些不同的事情,正如您在我的views.py文件中看到的那样:

def add_foo_to_bar(request, id):
    ...
    try:
        bar = Bar.objects.get(pk=id)

        if request.method == 'POST': # handle submitted data
            form = AddFooToBarForm(bar, request.POST)
            if form.is_valid(): # good, now create Foo and add to bar
                ...
                to_original = form.cleaned_data['to_original']
                print 'to original is {0}'.format(to_original) # for debugging
                if to_original:
                    # do A
                else:
                    # do B

                ...

因此,我想测试我的网站是否确实执行了正确的操作,具体取决于用户是否在我的tests.py文件中选中复选框:

class FooTest(TestCase):
    ...

    def test_submit_add_to_Bar(self):
        form_data = {
            ...
            'to_original': True,
        }
        response = self.client.post(reverse('add_foo_to_bar', args=(self.bar.id,)),
                                    form_data, follow=True)
        self.assertContains(...) # works

        ...

        form_data['to_original'] = None
        response = self.client.post(reverse('add_foo_to_bar', args=(self.bar.id,)),
                                    form_data, follow=True)
        print response # for debugging purposes
        self.assertContains(...) # doesn't work

我试过了

  • del form_data['to_original']- 这给了我“哦,不!我该如何解决?” 错误信息
  • form_data['to_original'] = None-- 在我的视图函数中,我得到True了,所以完成了 A 而不是 B
  • form_data['to_original'] = False- 这给了我“哦,不!我该如何解决?” 再次出现错误信息

那么我应该如何测试用户检查 Django 中的复选框呢?(我使用的是最新版本,1.4.3)

4

1 回答 1

1

未选中复选框时,它不会出现在提交的表单中。此外,当提交的值为'on'.

如果您想在定义表单字段时设置BooleanField可选的 have 。required=False

文档 BooleanField

于 2012-12-26T05:33:39.330 回答