Python 使用django测试表单并给出断言错误

Python 使用django测试表单并给出断言错误,python,django,forms,sqlite,testing,Python,Django,Forms,Sqlite,Testing,我正试图用Django项目为我的表单编写测试。 我尝试测试以下书单: forms.py 我的test_forms.py如下所示: class BookFormTest(TestCase): def test_read_date_in_the_past(self): print('BookForm TEST Lounched') title = 'TestBookPast' author = 'TestAuthorPast' date = datetime.dat

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

我的test_forms.py如下所示:

class BookFormTest(TestCase):

def test_read_date_in_the_past(self):
    print('BookForm TEST Lounched')
    title = 'TestBookPast'
    author = 'TestAuthorPast'
    date = datetime.date.today() + datetime.timedelta(days=2)
    form_data = {'title': title, 'author': author, 'read_date': date}
    form = BookForm(data=form_data)        
    self.assertTrue(form.is_valid())
我不知道它为什么不起作用。也许我忘了一些非常重要的事情

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

self.assertTrueform.exe是否有效 断言者错误:False不是true


显然,该表格与您提供的数据不符。这可能是因为您将日期对象作为read_date传递,而不是包含日期的字符串

检查form.errors,以明确表单无效的原因

为此,您可以在断言之前添加一条print语句

print(form.errors)
如果输出被您的测试框架吞没,并且没有打印到控制台,那么您也可以尝试调试器。添加此行:

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

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


或者,您也可以使用Python manage.py shell启动Python shell并手动输入代码。

非常感谢。第一部分帮助处理form.errors。从列表中选择author时出错,我应该创建test_author,然后将其传递给form_data={'author':test_author.id},该作者可以从下拉列表中选择。
import pdb; pdb.set_trace()