代码之家  ›  专栏  ›  技术社区  ›  willem

在Django(Google App Engine上),运行单元测试时是否应该调用main.py?

  •  1
  • willem  · 技术社区  · 15 年前

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

    当我运行测试时,会出现以下错误:

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

    这看起来很直接-我的django设置还没有初始化。在Google App Engine上设置th django环境是在main.py(在App.yaml中指定)中进行的,但这显然是正确的 得到单元测试的调用。我的单元测试应该从调用main.py中的main()开始吗?我不确定。

    2 回复  |  直到 15 年前
        1
  •  1
  •   durin42    15 年前

    您应该将主入口点中的环境变量导出到测试中。根据您的设置,您可以通过导入main.py文件来完成此操作,但是添加 os.environ['DJANGO_SETTINGS_MODULE'] 指向用于运行测试的文件的行。

    这可能有点困难,这取决于你如何设置测试。您是在使用像nose或Django的测试套件这样的testrunner工具吗?

        2
  •  0
  •   Michael    14 年前

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

    当我把它放在一个给定的.py的头文件中时,我一直对它感到不安,所以我意识到每次设置它都可以确保它总是正确的。

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

    哦,好吧。