用Django-give-AssertionE测试_表单

2024-09-29 18:54:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Django项目为我的表单编写测试。 我试着测试以下的书架: 表单.py在

class BookForm(ModelForm):
class Meta:
    model = Book
    fields = ['title', 'author', 'summary', 'tag', 'genre', 'language', 'book_format', 'read_date']
    #labels = 
    widgets = {
        'author': AddAnotherWidgetWrapper(
            forms.Select,
            reverse_lazy('author_form'),),
        'tag': AddAnotherWidgetWrapper(
            forms.SelectMultiple,
            reverse_lazy('author_form'),),            

    }       
    permission_required = 'libraryapp.can_edit'

def __init__(self, *args, **kwargs):
    self.request = kwargs.pop('request', None)
    # print(self.request.user)
    super(BookForm, self).__init__(*args, **kwargs)

我的测试_表单.py看起来像这样:

^{pr2}$

我不知道它为什么不起作用。也许我忘了一些很重要的事?在

我总是得到这样的断言错误:

self.assertTrue(form.is_valid()) AssertionError: False is not true


Tags: pyselfform表单initrequesttagforms
1条回答
网友
1楼 · 发布于 2024-09-29 18:54:24

显然,表单与您提供的数据无效。这可能是因为您传递的是date对象,而不是包含日期的字符串。在

检查form.errors以获得表单无效的确切答案。在

为此,可以在断言之前添加print语句。在

print(form.errors)

如果输出被测试框架吞并而没有打印到控制台,您也可以尝试调试器。添加此行:

^{pr2}$

测试将在该行停止,提示(pdb)。输入p form.errors以打印错误。在

然后可以输入q退出调试器。在

或者,也可以用python manage.py shell启动pythonshell并手动输入代码。在

相关问题 更多 >

    热门问题