嗅探器找不到DJANGO_SETTINGS_MODULE

时间:2012-12-20 15:06:08

标签: python django tdd automated-tests sniffer

我正在尝试在开发过程中进行更改后自动执行测试重新运行。搜索一下后sniffer似乎很好。但是,如果我运行它,我的测试会因此错误而失败:

  

ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)

如果我手动运行它们就会通过。你有一个线索,为什么嗅探器不起作用?

3 个答案:

答案 0 :(得分:4)

您的scent.py应该可以使用以下内容:

from subprocess import call
from sniffer.api import runnable

@runnable
def execute_tests(*args):
    fn = [ 'python', 'manage.py', 'test' ]
    fn += args[1:]
    return call(fn) == 0

然后您可以将其称为sniffer -x appName

答案 1 :(得分:1)

您可以通过在与sniffer相同的目录中创建scent.py文件来获取manage.py来阅读您的设置。

这就是我的样子:

import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'myapp.settings'

哪会让你sniffer读取你的设置,但是你会遇到其他问题 - 基本上,sniffer只是使用nose运行你的测试,这不是'与安装manage.py testdjango-nose所做的事情相同。

有人知道scent.py与{Django一起snigger需要做什么吗?

答案 2 :(得分:0)

尝试猜测问题可能存在的位置:您似乎需要明确设置settings.py文件的位置。

如果您正在通过subprocess'通话运行测试,则可以使用以下命令:

call(["django-admin.py", "test --settings=your_project.settings"])

否则您可以使用以下命令设置环境变量:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project.settings'

(使用django项目的名称更改your_project)

如果您正在运行像“./manage.py tests”这样的命令,您可以在manage.py开头添加以前的行(还有其他方法,但我需要查看代码以提供更精确的解决方案)