sniffer找不到DJANGO_SETTINGS_MODULE
问题描述:
我试图在开发过程中发生变化后自动重新运行测试。经过搜索周围一点sniffer似乎很好。但如果我运行它,我的测试失败,出现此错误:sniffer找不到DJANGO_SETTINGS_MODULE
ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)
如果我手动运行它们,它们会通过。你有什么线索为什么嗅探器不工作?
答
试图猜测问题可能存在的位置:似乎您需要明确设置settings.py文件的位置。
,如果你从一个subprocess运行测试“叫你可以使用下面的命令:
call(["django-admin.py", "test --settings=your_project.settings"])
否则,你可以设置环境变量使用下面的命令:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project.settings'
(其他城市您的项目名称为您的django项目)
如果您正在运行类似“./manage.py tests”的命令,您可以在b处添加前一行manage.py的eginning(还有其他方法,但我需要看到代码,以提供更精确的解决方案)
答
你可以得到sniffer
通过创建scent.py
文件在同一目录manage.py
阅读您的设置。
这里是我的样子:
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'myapp.settings'
这将让你尽可能sniffer
阅读您的设置,但随后你会碰到其他问题 - 基本上,sniffer
只是用nose
运行你的测试,这与安装django-nose
时manage.py test
不一样。
有人知道还有什么需要在scent.py
的snigger
以与Django?
答
像下面为您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 runner不保存用户环境变量的事实有关。如果你可以添加一些代码来显示你如何调用你的测试函数,我们可以提供更多的提示 – furins