目的
Django上で実装した単体テストが網羅出来ていない箇所を探索する為, coverage
を導入してカバレッジの計測を行う.
検証
環境
導入
Djangoは既にインストール済みであることを前提とする.
$ pip install coverage
計測
全テストを実行し, 計測を行う. この時に.coverage
ファイルを生成される.
$ coverage run --source=. --omit='*/tests*' manage.py test
この時, 単体テストを集約している任意のディレクトリを対象外にする為, --omit
オプションを使用してカバレッジの計測の対象外としている.
計測時のオプションの種類についてはhelpを参照する.
$ coverage run --help
結果
計測結果を出力する.
$ coverage report -m
Name Stmts Miss Cover Missing
----------------------------------------------------------------------------------
auth/models.py 61 7 89% 15, 28-30, 115-116, 119
...
config/__init__.py 0 0 100%
...
----------------------------------------------------------------------------------
TOTAL 967 207 79%
カラム名とその意味については以下の通りである. Missing
は, -m
オプションを使用することで出力される.
カラム名 | 意味 |
---|---|
Name | カバレッジ計測の対象ファイル名を指す. |
Stmts | Statementsの略称. 実行可能コードの行数を指す. |
Miss | Stmtsの中で実行されなかった行数を指す. |
Cover | カバレッジ(網羅率)を指す. |
Missing | Missの対象となった行番号を指す. |
結果出力時のオプションの種類についてはhelpを参照する.
$ coverage report --help
また, HTMLやXML, JSON形式などでレポートを生成することも可能とのこと. 詳細はドキュメントに記載されている.
まとめ
Djangoの単体テスト実行時にカバレッジを計測することで, 網羅していない箇所を可視化した.