目的
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の単体テスト実行時にカバレッジを計測することで, 網羅していない箇所を可視化した.