我正在做一个Django项目,并且正在为它编写单元测试.但是,在测试中,当我try 让用户登录时,我收到以下错误:
MessageFailure: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware
登录到实际的站点工作正常——并且使用MessageMiddleware显示登录消息.
在我的测试中,如果我这样做:
from django.conf import settings
print settings.MIDDLEWARE_CLASSES
然后输出:
('django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
它似乎显示在运行测试时安装了MessageMiddleware.
我有没有漏掉什么明显的步骤?
UPDATE个
在下面的建议之后,它看起来确实像是设置的问题.
我现在有settings/__init__.py
个这样的:
try:
from settings.development import *
except ImportError:
pass
settings/defaults.py
个包含大多数标准设置(包括MIDDLEWARE_CLASSES
个).然后settings.development.py
覆盖了一些默认值,如下所示:
from defaults import *
DEBUG = True
# etc
使用开发设置,我的开发站点本身看起来运行得很好.但是,尽管测试似乎加载了设置OK(默认和开发),但settings.DEBUG
被设置为False
.我不知道为什么,或者这是否是问题的原因.