sniffer找不到DJANGO_SETTINGS_MODULE

问题描述:

我试图在开发过程中发生变化后自动重新运行测试。经过搜索周围一点sniffer似乎很好。但如果我运行它,我的测试失败,出现此错误:sniffer找不到DJANGO_SETTINGS_MODULE

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

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

+0

原因可能与sniffer runner不保存用户环境变量的事实有关。如果你可以添加一些代码来显示你如何调用你的测试函数,我们可以提供更多的提示 – furins

试图猜测问题可能存在的位置:似乎您需要明确设置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-nosemanage.py test不一样。

有人知道还有什么需要在scent.pysnigger以与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