python - 测试 Django : reason for unexpected http status code

标签 python django unit-testing httprequest

我们的 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/

相关文章:

php - Zend Studio 和 PHPUnit 入门问题

javascript - 有人有 Jasmine 的 mstest 运行者吗?

python - 在Python中如何在二维列表中找到内部列表的最大长度?

python - 如何在不安装 MySQL Server 的情况下安装 Python MySQLdb

用于升和毫升之间转换的Python单位模块不起作用

python - 如何实现用数据库中的值填充的下拉列表

python - 如何在 C 中实现 Python Set

python - urls.py 中的 if 条件 - django

python - 如何在 django 中使用 South 将 CharField 替换为foreignkey?

Android:如何在主项目中使用测试项目