【发布时间】:2013-05-08 19:01:25
【问题描述】:
好的,所以我需要对视图进行单元测试,更精确的形式是在视图中。所以我创建了这样一个单元测试。
class ViewTest(TestCase):
fixtures = ['fixture.json']
def setUp(self):
self.client = Client()
def test_company_create(self):
post_data = {
'form-0-user': '',
'form-0-share': '',
'form-TOTAL_FORMS': 1,
'form-INITIAL_FORMS': 0,
'form-MAX_NUM_FORMS': 10
}
resp = self.client.post('/company/create/', post_data)
self.assertFormError (resp, 'shareholder_formset', 'share', 'This field is required.')
self.assertFormError (resp, 'shareholder_formset', 'user', 'This field is required.')
当然我得到一个错误
AttributeError: 'ShareholderFormFormSet' 对象没有属性 '字段'
因为 formset 里面有表单,而不是字段.....那么测试 formset 的正确方法是什么?
【问题讨论】:
-
@alecxe 这个问题的相似之处仅在于它也与表单集和单元测试有关...@Viktor 仅测试
ShareholderForm怎么样?看起来这就是你试图用你的断言做的事情...... -
您在这个“单元”测试中同时测试视图和表单。无需执行 POST 即可测试表单。请参阅A Guide to Testing in Django #2中的“测试表格”部分
-
@gertvdijk 问题是,我在一个视图中有一个表单和一个表单集。基本上,当表单集数据和其他表单数据通过默认验证时,我会在视图中比较来自这些表单的数据,如果不匹配,那么我会手动在视图中引发错误。我这样做只是因为没有其他方法可以比较来自不同表单的数据,在我的情况下是一个表单和我的表单集......所以是的,如果你不比较来自不同表单的数据,并且不需要测试表单从某种意义上说,就我而言,它不是那样工作的。
-
@alecxe 这些完全是两个不同的问题。
标签: django unit-testing formset