我有一个单元测试在一个断言中失败,该断言在同一测试用例类中的另一个测试中通过。
这是通过的测试:
def test_home(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.status_code, 200)
self.assertTrue('a_formset' in resp.context)
这是失败的测试:
def test_number_initial_number_of_forms(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.context['a_formset'].total_form_count(), 1)
在第二个测试中,我得到了错误TypeError: 'NoneType' object has no attribute '__getitem__'
。
如果我执行第二个测试
def test_number_initial_number_of_forms(self):
c = Client()
resp = c.get('/')
self.assertTrue('a_formset' in resp.context)
self.assertEqual(resp.context['a_formset'].total_form_count(), 1)
我得到错误TypeError: argument of type 'NoneType' is not iterable
。我已经在第二个测试中通过打印语句确认 response.content 包含我希望获得的页面,状态代码是正确的,并且模板是正确的。但是响应的上下文始终None
在第二个测试中。
我正在通过标准的“python manage.py test ...”接口运行我的 Django 单元测试,所以我不相信我遇到了“ context is empty from the shell ”的问题。
这是怎么回事?
编辑:
如果我添加print type(resp.context['a_formset'])
到每个测试中,对于我得到的工作测试<class 'django.forms.formsets.AFormFormSet'>
。对于非工作测试,我TypeError: 'NoneType' object has no attribute '__getitem__'
再次获得。