それで、私の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
するので、Bの代わりにAが実行されますform_data['to_original'] = False
-これで「ああ、どうすれば修正できますか?」もう一度エラーメッセージ
では、Djangoのチェックボックスをチェックせずにユーザーをテストするにはどうすればよいですか?(最新バージョンの1.4.3を使用しています)