Я работаю над проектом Django и пишу для него юнит-тесты. Однако в тесте, когда я пытаюсь войти в систему, я получаю эту ошибку:
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 устанавливается при запуске тестов.
Есть ли очевидный шаг, который я пропустил?
ОБНОВЛЕНИЕ
После приведенных ниже предложений это похоже на настройки.
Сейчас у меня 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
Похоже, что мой сайт разработки работает нормально, используя настройки разработки. Но хотя тесты вроде загружают настройки ОК (как по умолчанию, так и для разработки)settings.DEBUG
установлен на False
. Я не знаю, почему, и является ли это причиной проблемы.