我目前正在尝试为自己的表单创建测试,该测试肯定是有效的,因为我正在我的应用程序中对其进行手动测试,但是在测试中向我展示了我的form.is_valid == False。我不知道自己在测试中做错了什么,有没有办法单独检查每个字段以找出导致测试形式无效的原因?
我的代码:
forms.py
from django.forms import ModelForm
from django import forms
from .models import Comment
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ['nick', 'rate', 'content']
widgets = {'nick': forms.HiddenInput()}
test_forms.py
from django.test import TestCase
from django.contrib.auth.models import User
from ..forms import CommentForm
class CommentFormTest(TestCase):
def test_form(self):
user = User.objects.create(username='Testowy')
form_data = {
'nick': user,
'rate': '1',
'content': 'test content',
}
form = CommentForm(data=form_data)
self.assertEqual(form.is_valid(), True)
答案 0 :(得分:1)
测试断言始终具有一个可选参数(最后一个或msg
),以便在断言失败的情况下打印消息。您应该在测试中尽可能多地使用它(除非结果本身很明显),以帮助您确定断言失败的原因:
self.assertTrue(
form.is_valid(),
msg=f"form should have been valid, but contains errors: {form.errors}")
这样,错误将被打印到测试控制台的输出中。