4

我正在尝试在开发过程中进行更改后自动重新运行测试。在四处搜寻后,嗅探器似乎没问题。但是,如果我运行它,我的测试会因以下错误而失败:

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

如果我手动运行它们,它们就会通过。你知道为什么嗅探器不起作用吗?

4

3 回答 3

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.

于 2013-10-25T09:30:50.350 回答
1

您可以sniffer通过scent.py在与manage.py.

这是我的样子:

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

这将使您尽可能sniffer阅读您的设置,但随后您会遇到其他问题 - 基本上,sniffer只需使用 运行您的测试nose,这与安装manage.py test时所做的不同django-nose

有人知道Django还需要做什么scent.py吗?snigger

于 2013-01-31T02:55:57.277 回答
0

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

如果您正在从subprocess调用运行测试,则可以使用以下命令:

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

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

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

(将 your_project 更改为您的 django 项目的名称)

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

于 2012-12-20T16:15:42.780 回答