エラー現象
Djangoでこれまで問題なく実行てきていたtestコマンドを実行すると、下記のエラーが発生した。
SystemCheckError: System check identified some issues:
ERRORS:
?: (debug_toolbar.E001) The Django Debug Toolbar can’t be used with tests
HINT: Django changes the DEBUG setting to False when running tests. By default the Django Debug Toolbar is installed because DEBUG is set to True. For most cases, you need to avoid installing the toolbar when running tests. If you feel this check is in error, you can set DEBUG_TOOLBAR_CONFIG['IS_RUNNING_TESTS'] = False
to bypass this check.
解決方法
HINTにあるように、setting.py でDEBUG_TOOLBAR_CONFIG['IS_RUNNING_TESTS'] = False
を追加することで実行できる。
DEBUG_TOOLBAR_CONFIG = {
"SHOW_TOOLBAR_CALLBACK" : lambda request: DEBUG,
"IS_RUNNING_TESTS": False
}
解決方法2
下記のようにtest
コマンドが実行中の場合は、debug_toolbarをインストールしない様な記述でも実行できるようになるが、上記の方法がシンプル。
- 先にデバッグツールバーを追加し、後から除く方法
import sys
INSTALLED_APPS = [
'xxxxx',
'debug_toolbar',
]
MIDDLEWARE = [
'xxxxx'
'debug_toolbar.middleware.DebugToolbarMiddleware'
]
is_test = 'test' in sys.argv
if is_test:
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': lambda request: False,
}
INSTALLED_APPS = [app for app in INSTALLED_APPS if app != 'debug_toolbar']
MIDDLEWARE = [mw for mw in MIDDLEWARE if mw != 'debug_toolbar.middleware.DebugToolbarMiddleware']
- 後からデバッグツールバーを追加する方法
import sys
INSTALLED_APPS = [
'xxxxx',
]
MIDDLEWARE = [
'xxxxx',
]
is_test = 'test' in sys.argv
if not is_test:
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': lambda request: False,
}
INSTALLED_APPS += ['debug_toolbar']
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']
原因
debug_toolbarのversion4.4.1から仕様が変更になったみたい。
https://github.com/jazzband/django-debug-toolbar/issues/1920
ちなみに本エラーが出た環境ではversion4.4.2だった。
コメント