【问题标题】:In Django (on Google App Engine), should I call main.py when running Unit Tests?在 Django(在 Google App Engine 上)中,我应该在运行单元测试时调用 main.py 吗?
【发布时间】:2010-12-19 12:22:45
【问题描述】:

我在 Google App Engine 上有一个 Django 应用程序,我想开始编写单元测试。但我不确定如何设置我的测试。

当我运行测试时,我收到以下错误:

EnvironmentError: Environment variable DJANGO_SETTINGS_MODULE is undefined.
ERROR: Module: tests could not be imported.

这看起来很简单——我的 django 设置尚未初始化。 Google App Engine 上的 django 环境设置发生在 main.py(在 app.yaml 中指定)中,但这显然不会被调用以进行单元测试。我的单元测试应该从调用 main.py 中的 main() 开始吗?我不确定。

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

    您可能应该只将主入口点中的环境变量导出到您的测试中。根据您的设置,您可以通过导入 main.py 文件来做到这一点,但将 os.environ['DJANGO_SETTINGS_MODULE'] 行添加到用于运行测试的文件中可能同样容易。

    这可能有点困难,具体取决于您设置测试的方式。您使用的是像鼻子这样的测试运行器还是 Django 的测试套件工具?

    【讨论】:

      【解决方案2】:

      我对这个问题的最终解决方案是在使用我使用的唯一真正的 Django 函数 template.render_to_string() 之前立即添加 os.environ['DJANGO_SETTINGS_MODULE'] 行。

      当我将它放在给定 .py 的标头中时,我一直遇到它无法设置的问题,所以我意识到每次都设置它可以确保它永远是正确的。

      多么令人沮丧的问题。我真的希望在某个地方(可能在 app.yaml 中)有一个简单的设置可以选择 Django 版本,并正确设置这个变量。

      哦,好吧。

      【讨论】:

        猜你喜欢
        • 2013-12-20
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 2016-03-20
        • 1970-01-01
        相关资源
        最近更新 更多