我正在尝试在开发过程中进行更改后自动执行测试重新运行。搜索一下后sniffer似乎很好。但是,如果我运行它,我的测试会因此错误而失败:
ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)
如果我手动运行它们就会通过。你有一个线索,为什么嗅探器不起作用?
答案 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 test
时django-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开头添加以前的行(还有其他方法,但我需要查看代码以提供更精确的解决方案)