我正在尝试在开发过程中进行更改后自动重新运行测试。在四处搜寻后,嗅探器似乎没问题。但是,如果我运行它,我的测试会因以下错误而失败:
ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)
如果我手动运行它们,它们就会通过。你知道为什么嗅探器不起作用吗?
您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
.
您可以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
试图猜测问题可能出在哪里:您似乎需要明确设置 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 的开头添加前几行(还有其他方法,但我需要查看代码以提供更精确的解决方案)