環境
- 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 の教科書《実践編》(横瀬 明仁)