テストについて#
テスト戦略#
モジュール単体テスト#
目的#
インフラストラクチャ層のモジュール内の分岐処理等想定通り行われているかを確認する。
方法#
テストコードで実施
外部依存部分はすべてモック・スタブを利用し、正しく呼び出されているかの確認を行う。
ユースケーステスト#
目的#
ユースケースが想定した動作をするかの確認。
方法#
テストコードで実施
スタブを利用して正しくユースケースが動作しているかを確認する。
dependenciesテスト#
目的#
正しく依存関係の解決ができているかをテストする。
方法#
テストコードで実施
解決対象のモジュールを全てモックし、必要な引数で呼び出されているかを確認する。
外部結合・システムテスト#
目的#
全てのコードと外部依存先も含め想定した動作をしているか確認する。
方法#
手動でコマンドを実行し確認
テスト仕様書にのっとりテストを行う。
テストコードについて#
通常実行方法#
- ターミナルでsrcフォルダへ移動する。
- venvをactivateする。
- 下記コマンドを実行しテストする。
pytest ./daily_report_for_client
デバッグ実行方法(VSCode)#
- VSCodeで「CTRL + Shift + D」で「実行とデバッグ」画面を開く。
- 歯車マーク('launch.json'を開く)をクリックする。
-
launch.jsonを下記のようにする。
{ "version": "0.2.0", "configurations": [ { "name": "pytest デバッガー", "type": "debugpy", "request": "launch", "module": "pytest", "args": ["./daily_report_for_client"], "console": "integratedTerminal", "cwd": "${workspaceFolder}/src", "python": "${workspaceFolder}/src/venv/Scripts/python" } ] } -
「F5」でデバッグ実行する。
カバレッジについて#
カバレッジの取得方法#
前提条件#
- python仮想環境をアクティベートしていること。
- ターミナルで「src」フォルダ内に移動していること。
取得方法#
-
下記コマンドでカバレッジを取得するためのライブラリをインストールする。
pip install pytest-cov -
下記コマンドを実行する。
pytest --cov --cov-config=./daily_report_for_client/.coverage --cov-report=html ./daily_report_for_client
実行後、「src/daily_report_for_client」内に「htmlcov」フォルダが作成される。
フォルダ内の「index.html」をブラウザで開くことでカバレッジの確認ができる。
合格ライン#
ユースケーステスト#
対象コードの実行とassertが全て成功し、use_case.pyのカバレッジが100%。
dependenciesテスト#
対象コードの実行とassertが全て成功し、「Dependencies」クラスのカバレッジが100%。
モジュール単体テスト#
対象コードの実行とassertが全て成功し、「infrastructure」のlogger.py以外のカバレッジが100%