5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Djangoのテスト時に "ValueError: Missing staticfiles manifest entry" が起きたら

Last updated at Posted at 2018-06-14

エラーの原因と回避方法は「[Django]DjangoのテストをDEBUG=Trueで実行する」と同じです。状況が少し違ったので、新たな記事を書くことにしました。

エラーが起きた状況

Django 2.0 での開発中、manage.py test myapp を実行したところ、静的ファイルが見つからずにエラーになってしまいました。

$ python manage.py test my_app
Creating test database for alias 'default'...
System check identified no issues (0 silenced).

(snip)

  File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/storage.py", line 422, in stored_name
    raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
ValueError: Missing staticfiles manifest entry for 'my_app/css/default.css'

----------------------------------------------------------------------
Ran 1 test in 0.949s

FAILED (errors=1)
Destroying test database for alias 'default'...

settings.py では DEBUG=True を指定しており、ブラウザ上では該当の CSS ファイルが正しく参照できているので、最初は原因がわかりませんでした。

エラーの原因

エラーの原因は、settings.py で DEBUG=True が指定されていても manage.py test すると DEBUG=False とみなされてテストが実行されるためでした。

DEBUG=False で実行されても静的ファイルが見つかるように manage.py collectstatic すればよいのですが、まだ開発中のため避けたいところです。

エラーの回避方法

Django 1.11 から追加された --debug-mode オプション を指定すれば、DEBUG=True が指定されたものとして実行されます。

$ python manage.py test --debug-mode my_app
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 1.501s

OK
Destroying test database for alias 'default'...

チケット #27008 で、このオプションの追加が議論されていました。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?