【发布时间】:2014-07-01 11:12:45
【问题描述】:
我们的 django 应用程序中有很多单元。
但是如果由于状态码不匹配而导致测试失败:
Traceback (most recent call last):
File "/home/foo_eins_di514/src/foo-time/foo_time/tests/EditTest.py", line 813, in test_web_entry_with_unclassified_activity
self.assertEqual(200, response.status_code, url)
File "/usr/lib64/python2.7/unittest/case.py", line 494, in assertEqual
assertion_func(first, second, msg=msg)
File "/usr/lib64/python2.7/unittest/case.py", line 487, in _baseAssertEqual
raise self.failureException(msg)
AssertionError: /foo_eins_di514/modtime/calendar/entry/view/172/
.... 完全不知道错误的退出状态是在哪里创建的。
对于大型应用程序,可能需要一些时间才能找到创建存在状态的问题根源,因为退出状态也可以在中间件中创建。
任何提示如何使它更可测试?
测试看起来像这样:
url=reverse(view_name, kwargs=dict(id=entry.id))
response=client.get(url)
self.assertEqual(200, response.status_code, url)
【问题讨论】:
-
首先,您能否发布一个示例测试...可能让人们建议如何更好地进行单元测试。其次,就我个人而言,我发现如果我返回 200,我很少专门检查 status_code == 20,而是执行 self.assertContains(response,"some text I'm looking for"),这隐含也做了200检查。 YMMV。
-
@Foon 我添加了测试的相关sn-p。
标签: python django unit-testing httprequest