18

我已将我的 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)

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

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

4

2 回答 2

11

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

import django
django.test.utils.setup_test_environment() 

通过我的链接查找更多详细信息:http: //jazstudios.blogspot.com/2011/01/django-testing-views.html

于 2011-01-30T22:08:42.873 回答
0

来自 Django 文档:

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

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

你可以看到这个问题

于 2018-12-06T13:04:43.993 回答