不使用打印的测试用例的 AttributeError
AttributeError on a test case without using print
我是 Python/Django 的新手,而且我是自学的,所以也许我在这里遗漏了一些基本知识...
我正在尝试在 Django 中为模型表单编写一个测试用例。
我创建了一个表单实例,我可以打印它以查看 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' 对象没有属性 'cleaned_data'
为什么打印语句会对访问对象的属性产生影响?
您必须调用 is_valid()
才能访问 cleaned_data
。
test_form = bulk_image_form
test_form.is_valid()
print(test_form.cleaned_data)
当您打印表单时,该表单被验证为副作用,因此您可以访问 cleaned_data
,即使您没有明确调用 is_valid()
。
我是 Python/Django 的新手,而且我是自学的,所以也许我在这里遗漏了一些基本知识...
我正在尝试在 Django 中为模型表单编写一个测试用例。 我创建了一个表单实例,我可以打印它以查看 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' 对象没有属性 'cleaned_data'
为什么打印语句会对访问对象的属性产生影响?
您必须调用 is_valid()
才能访问 cleaned_data
。
test_form = bulk_image_form
test_form.is_valid()
print(test_form.cleaned_data)
当您打印表单时,该表单被验证为副作用,因此您可以访问 cleaned_data
,即使您没有明确调用 is_valid()
。