【问题标题】:How to test custom handler500?如何测试自定义 handler500?
【发布时间】:2012-09-27 15:53:41
【问题描述】:

我为服务器错误编写处理程序并在根 urls.py 中定义它: handler500 = 'myhandler' 我想编写 unittest 来测试它是如何工作的。为了测试,我编写了带有错误的视图并在测试 URL 配置中定义它,当我在浏览器中向该视图发出请求时,我看到我的处理程序并收到状态代码 500,但是当我启动对该视图发出请求的测试时,我看到堆栈跟踪和我的测试失败了。您对通过 unittests 测试 handler500 有什么想法吗?

【问题讨论】:

  • 您要准确测试哪一部分?你的处理程序的行为?它被注册为处理程序的事实?
  • 我想测试我的处理程序是否注册为默认 handler500(我的响应内容和状态码等于 500)
  • 我想你可能想要一个实际的测试框架,比如 selenium。
  • Selenium 对我不好,因为想要在没有服务器的情况下启动测试。以我的方式,单元测试更有用。
  • 我认为您可以查看 Django 文档关于使用 Selenium 进行测试。

标签: python django


【解决方案1】:

你想在这里做的是integration testing;单元测试不是适合它的工具。

Django includes support 用于使用著名的实时浏览器测试工具,例如Selenium

正如您所指出的,对于您的具体情况,确实是pretty complicated to retrieve the status code for a page using Selenium,因此您可能希望使用更简单的方法:

  1. 使用LiveServerTestCase
  2. 使用requests等python HTTP客户端访问测试页面
  3. 检查测试页面是否生成了 HTTP 500 错误
  4. 检查测试页是否包含预期的内容。

如果你想在测试页面上测试一些 JS,那么使用 Selenium 作为那部分,结合请求来测试状态。

【讨论】:

  • 谢谢! LiveServerTestCase 很棒的功能,有了它我可以为所欲为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多