私は 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
私の開発サイト自体は、開発設定を使用して正常に動作しているようです。しかし、テストは設定をロードしているように見えますが、OK (デフォルトと開発の両方)settings.DEBUG
は に設定されていFalse
ます。なぜなのか、それが問題の原因なのかどうかはわかりません。