【问题标题】:Django test client response context NoneDjango 测试客户端响应上下文无
【发布时间】:2011-05-07 19:14:26
【问题描述】:

我已将我的 Django 应用程序从我的开发机器(OS X、Python 2.6.5、Django 1.2.3)移动到临时服务器(Ubuntu VM、Python 2.6.6、Django 1.2.3)。

如果我现在在登台服务器上运行我的测试套件,则在使用 Django TestClient 时有两个测试失败,因为 response.context 为 None(但 response.content 是正确的)。

例如:

self.assertEquals(self.session.pk, response.context['db_session'].pk)

这些测试用例在开发机器上通过。

有没有人遇到过类似的问题?

【问题讨论】:

  • 所以上面的断言抛出了一个错误,声称 response.context 是 None?我们可以看到堆栈跟踪吗?
  • 这里是另一个可能相同问题的讨论:Django unit test response context is None
  • 对我来说,当我在我的开发实例上启用 memcache 缓存时发生了这个错误。将缓存配置改回 DummyCache 后,错误消失了。

标签: django ubuntu django-testing


【解决方案1】:

您需要添加测试设置语句。

import django
django.test.utils.setup_test_environment() 

点击我的链接了解更多详情: http://jazstudios.blogspot.com/2011/01/django-testing-views.html

【讨论】:

    【解决方案2】:

    来自 Django 文档:

    虽然 * 您的代码 * [+] 可以在 Python 交互式解释器中工作,但测试客户端的某些功能,尤其是与模板相关的功能,仅在测试运行时可用。这样做的原因是 Django 的测试运行程序执行了一些黑魔法,以确定给定视图加载了哪个模板。这种黑魔法(本质上是在内存中修补 Django 的模板系统)仅在测试运行期间发生。

    因此,如果您在测试运行中运行它,它应该可以工作。

    你可以看到this question

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 2010-12-28
      • 2011-12-18
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多