Python 使用本地设置进行django测试
Python 2.7 Django 1.2 在测试Django应用程序时,我会遇到奇怪的本地设置行为。我的/settings.py设置如下: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
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