Почему мои юнит-тесты Django не знают, что установлено MessageMiddleware?

Я работаю над проектом 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. Я не знаю, почему, и является ли это причиной проблемы.

38
задан Phil Gyford 13 August 2012 в 17:56
поделиться