【问题标题】:test_forms with django give AssertionError带有 django 的 test_forms 给出 AssertionError
【发布时间】:2018-12-16 10:10:08
【问题描述】:

我正在尝试使用我的 Django 项目为我的表单编写测试。 我尝试测试以下 BookForm: forms.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)

我的 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())

我不知道为什么它不起作用。也许我忘记了一些非常重要的事情?

我总是得到这个 AssertionError:

self.assertTrue(form.is_valid()) AssertionError: False 不正确

【问题讨论】:

    标签: python django forms sqlite testing


    【解决方案1】:

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

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

    为此,您可以在断言之前添加一个打印语句。

    print(form.errors)
    

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

    import pdb; pdb.set_trace()
    

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

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

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

    【讨论】:

    • 非常感谢。第一部分有助于解决 form.errors。从列表中选择作者有错误,我应该创建 test_author 然后将其传递给 form_data ={'author': test_author.id} 可以从下拉列表中选择作者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-02-17
    • 2023-02-01
    • 2015-05-03
    相关资源
    最近更新 更多