Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用本地设置进行django测试_Python_Django - Fatal编程技术网

Python 使用本地设置进行django测试

Python 使用本地设置进行django测试,python,django,Python,Django,Python 2.7 Django 1.2 在测试Django应用程序时,我会遇到奇怪的本地设置行为。我的/settings.py设置如下: DEBUG = False TEMPLATE_DEBUG = DEBUG ADMINS = ( ("Me", "me@me.com"), ) MANAGERS = ADMINS + (('Person1', 'person1@blah.com'),) # ... rest of settings try: from loca

Python 2.7 Django 1.2

在测试Django应用程序时,我会遇到奇怪的本地设置行为。我的/settings.py设置如下:

DEBUG = False
TEMPLATE_DEBUG = DEBUG

ADMINS = (
        ("Me", "me@me.com"),
)

MANAGERS = ADMINS + (('Person1', 'person1@blah.com'),)

# ... rest of settings

try:
    from local_settings import *
except ImportError:
    pass
在/local_settings.py中,我有:

因此,在本地工作时,经理的设置应该是“我”me@me.com“、”和“调试”应设置为True

但是,在我的一个应用程序的测试中,我正在测试settings.DEBUG并得到False,但是MANAGERS设置设置正确,其中只有“我”。你知道为什么会这样吗?以下是//tests.py文件的相关部分:

结果是

AssertionError: (('Me', 'me@me.com'),) != (('Me', 'me@me.com'), ('Person1', 'person1@blah.com'))
因此,由于settings.DEBUG设置不正确,它似乎正在测试else分支,然后由于settings.MANAGERS设置正确而引发AssertionError

如果运行python manage.py shell,我会得到以下结果:

>>> from django.conf import settings
>>> settings.DEBUG
True
>>> settings.MANAGERS
(('Me', 'me@me.com'),)
因此,它们被正确地设置在那里

我知道我可以在测试中手动覆盖设置,但我想尝试使用settings.DEBUG,这样无论测试是在本地运行还是在生产环境中运行,测试都会通过


有什么想法吗?

我记得读到你不应该在运行时以任何方式更改设置值,这会导致问题。

我记得读到你不应该在运行时以任何方式更改设置值,这会导致问题。

这是Django内部的故意选择:

不管配置文件中调试设置的值是多少,所有Django测试都以DEBUG=False运行。这是为了确保观察到的代码输出与生产设置中的输出相匹配


参考:

这是Django内部的有意选择:

不管配置文件中调试设置的值是多少,所有Django测试都以DEBUG=False运行。这是为了确保观察到的代码输出与生产设置中的输出相匹配

参考:

运行测试时使用-settings选项

python manage.py test --settings=mysite.settings_local
运行测试时使用-settings选项

python manage.py test --settings=mysite.settings_local

django文档说不要这样做:settings.BLAH='BLAH'位于设置文件之外,但将文件导入设置文件是Kosher django文档说不要这样做:settings.BLAH='BLAH'位于设置文件之外,但将文件导入设置文件是Kosher可能的重复,这是可能的重复坚果你应该如何调试你的测试?如果只有在调试为False时才设置电子邮件怎么办?@MagicLAMP您可以在这种情况下使用这是胡说八道。你应该如何调试你的测试?如果只有在调试为False时才设置电子邮件怎么办?@MagicLAMP在这种情况下可以使用
python manage.py test --settings=mysite.settings_local