不使用print的测试用例上的AttributeError

时间:2018-04-23 20:03:32

标签: python django python-unittest

我是Python / Django的新手,我自学成才,所以也许我在这里缺少一些基本的东西......

我正在尝试为Django中的Model Form编写一个测试用例。 我创建了一个我的表单实例,我可以打印它以查看Django如何呈现表单。

使用form.cleaned_data也可以,返回表单的值。

    bulk_image_form = BulkTestForm(data={'daisy': 3, 'dandelion': 0, 'tulips': 0, 'sunflowers': 1, 'roses': 0})
    test_form = bulk_image_form
    print(test_form)
    print(test_form.cleaned_data)

但是,只要删除第一个打印语句(print(test_form)),test_form.cleaned_data就不再有效了。控制台读取以下内容:

AttributeError:'BulkTestForm'对象没有属性'cleaning_data'

为什么print语句会对访问对象的属性产生影响?

1 个答案:

答案 0 :(得分:0)

您必须先致电is_valid(),然后才能访问cleaned_data

test_form = bulk_image_form
test_form.is_valid()
print(test_form.cleaned_data)

当您打印表单时,表单会被验证为副作用,因此即使您没有明确调用cleaned_data,也可以访问is_valid()