我们的 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)
最佳答案
听起来您应该将测试拆分为适当的单元测试并测试更小的代码单元。使用 Django 的 request factory并仅测试 View 代码。或者将您的 View 拆分为更小的函数并单独测试它们。
使用 Django 的测试客户端更像是一个集成测试而不是单元测试,因为它测试 url 路由、数据库、中间件、模板等
关于python - 测试 Django : reason for unexpected http status code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508847/