テストの網羅率を出す coverage を使ってみたのでメモ
参考
インストールする
coverage をインストールします。
pipenv もあるようですが今回は pip でインストールしました。
こちら の記事にあるように pip でインストールしたので「python3 -m」を付けなかった場合「bash: coverage: command not found」となってしまうようです。
pip3 install coverage
網羅率のデータを集める
次のコマンドを実行するとテストを実行してデータを集めるようです。
これが完了すると .coverage というファイルが作成されます。
python3 -m coverage run --source='.' manage.py test
レポートを出力する
テスト網羅率が記載されたレポートを出力します。
python3 -m coverage report
Name Stmts Miss Cover
-----------------------------------------------------------------
accounts/__init__.py 0 0 100%
accounts/admin.py 3 0 100%
accounts/apps.py 3 3 0%
accounts/migrations/0001_initial.py 8 0 100%
accounts/migrations/__init__.py 0 0 100%
accounts/models.py 6 1 83%
accounts/tests.py 1 0 100%
accounts/views.py 1 1 0%
app/__init__.py 0 0 100%
...(略)...
- Stmts(statements)
- 実行可能なコードの行数。
- Miss
- (実行可能なコード中の)実行されなかったコードの行数。
- Cover
- 網羅立
レポートをHTMLで出力する
レポートはHTMLで出力もできるようです。
python3 -m coverage html
レポートの網羅率100%を非表示にする
100% の所は確認する必要がないので非表示にしたい、という場合はオプション --skip-covered を使用することで非表示にできるようです。
python3 -m coverage report -m --skip-covered
オプションを省略する
.coveragerc を作成して下記のようにすることでコマンドにオプションを自動で付与してくれます。
omit は除外するファイルです。
[run]
source = .
omit =
*/tests/*
*/migrations/*
*/__init__.py
[report]
skip_covered = True
omit =
*/tests*
*/migrations/*
*/__init__.py
と言う事でオプション無しで下記のようにコマンドを実行する事ができるようになりました。
python3 -m coverage run manage.py test
python3 -m coverage report
python3 -m coverage html
ディスカッション
コメント一覧
まだ、コメントがありません