コマンドラインからunittestを使ってcoverageを取得する方法を解説しているページが無かったので備忘として。
pythonでunittestの書き方を知っているとすぐ使えると思います。
pythonのバージョンは3.6です。
エンジニアではカバレッジ=網羅率のように表現されます。
カバレッジは対象とするプログラムの「実行された行数 / プログラムの全行数」で求められる数値を指します。
SIerだと品質の指標としてカバレッジ〇%を掲げるところも多いです。
インストールしていない場合はpipでインストールしてください。
unittest
単体テスト作成に使用するライブラリ
coverage
テストカバレッジを取得するライブラリ
流れとしては以下のようになります。
unittestでテストコードを作ります。
作成した単体テストのプログラムをtest_SourceCode.pyとします。
unittestをcoverageから実行します。
具体的には以下のようなコマンドを実行します。
coverage run –source=. -m unittest test_SourceCode.py
–source
テストのカバレッジを取得する階層を指定できます。
これを指定しないとsite-packageまわりのカバレッジまで入ってくるので指定必須だと思います。
テストコードとテスト対象のコードが同パッケージ階層にある場合は「.」を指定します。
パッケージが別階層の場合はテスト対象コードの階層を指定する必要があります。
-m unittest test_SourceCode.py
テストを実行するライブラリとモジュールを指定できます。
coverage report
先ほど実行したテストのカバレッジを取得します。
coverage report -m
テストのカバレッジに加え実行されなかった行の行番号が表示されます。
以上、簡単ですがunittestでのテストカバレッジの取得についてでした。