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