TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング を参考に、Python3 + pytestでテスト駆動開発をやってみた。
- Windows 10 version 2004 ( OS Build 19041.388)
- Python 3.7.7
- pytest 6.0.1
- VSCode 1.47.3
- VSCode拡張機能
まずはPowershellを立ち上げ、普通にvenv作ってactivateする
python3 -m venv venv
venv/Scripts/Activate.ps1あとは、依存ライブラリをインストールする。
pip install -r requirements.txt
そうすると、VSCodeのTestペインにテスト一覧が出てくる。
pytest.iniを使って、pytestがテストコードとして検出するクラス・関数名をカスタマイズしている。
[pytest]
testpaths = tests
python_files = *.py
python_functions = *_test
python_classes = *- テストファイル群の置き場所はtestsフォルダ以下にする
- 指定したフォルダ内にあるファイルのうち、拡張子が.pyで終わるものをまずは拾う
- 関数名は「_test」で終わるものだけ対象にする
python_functions = *と記述し全ての関数を対象に指定すると、__eq__などデフォルトで用意されている関数も検索対象になる- その場合、pytestのログが「
PytestCollectionWarning: cannot collect '__eq__' because it is not a function」のようなメッセージで汚染されまくり、ログが見づらくなる
- その場合、pytestのログが「
python_functionsに何も設定しない場合、関数名が「test」で始まるものが対象になるが、テスト結果画面の冒頭がtestだらけで見づらくなってしまう。- 検出対象の関数を絞るためにどうせprefixかsuffixを付けないといけないのなら、suffixにしておけば、テスト結果を見たときに見やすい。
- クラス名に関しては全て対象にする
python_classesに何も設定しない場合、クラス名が「Test」で始まるものが対象になる。
