環境
- python 3.7.4
- django 2.2.8
- centOS 7
症状
python manage.py startapp sample
でアプリを作成し、sample/tests.py
に記述したテストは動く。
ファイル分割のためsample/tests/
ディレクトリを作成、sample/tests/test_model.py
を作成したものの、
python manage.py test
が動かない。
実行結果
(venv) user@localhost:django-app $ python manage.py test
System check identified no issues (0 silenced).
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
確認した
Djangoのテストは、テストランナーにテストを発見してもらうためのルールが存在する。
正しく沿っているか確認した。
- テストのモジュール名(ファイル名)は
test
で始まっているか・・・・・ OK -
django.test.TestCase
を継承しているか・・・・・・・・・・・・・ OK
(unittest.case.Testcase
でもOK) - テストメソッド名は
test
で始まっているか・・・・・・・・・・・・・ OK - そもそも
settings.py
のINSTALLED_APPS
に記述されているか・・・・OK
結論
sample/tests/
ディレクトリに__init__.py
が存在しないことが原因だった。
Djangoにモジュールとして認識できるようにしてやる必要があるようだ。
空ファイルでよいので作成すれば動く。
参考
- python - Why does django not see my tests? - Stack Overflow
- 現場で使える Django の教科書《実践編》(横瀬 明仁)