つまづいたこと
python -m unittest
をコマンドで実行すると自動でunittestが書いてあるファイルを検出してテストを実行してくれるはずだったが、テストファイルが全く検出されなかった。
解消した方法
テストが書いてあるフォルダに__init__.py
を追加
バグ解消前の階層
$ tree
.
├── server
│ └── index.py
└── tests
└── test_index.py
バグ解消後の階層
$ tree
.
├── server
│ ├── __init__.py
│ └── index.py
└── tests
├── __init__.py
└── test_index.py
補足
__init__.py
のファイルの中身は空でOKです。
結果
$ python3 -m unittest
.s
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=1)
__init__.py
の役割とは?
今回、python3 -m unittest
で検出されなかった理由は、testファイルが書かれているファイルのディレクトリがモジュール化されていなかったから。(unittestはモジュールの中にあるテストファイルを探す)
ディレクトリに__init__.py
を追加することで、そのディレクトリがモジュール化されるらしい。
詳しいことは以下に書かれています。
[Python の init.py とは何なのか - Qiita](Python の init.py とは何なのか - Qiita)