■ はじめに
nose を使うことになりそうなので、メモ。
■ 設定
pip install nose # カバレッジを取得するために... pip install coverage
■ nosetests コマンド
オプション一覧
https://het.as.utexas.edu/HET/Software/Nose/plugins/cover.html
# | オプション | 説明 |
---|---|---|
1 | --with-coverage | コードカバレッジ |
2 | --cover-branches | 分岐網羅 (C1:branch coverage)を測定 |
3 | --cover-erase | 前回収集した結果を消して、再測定 |
4 | --cover-html | HTML出力 |
補足:C0/C1/C2 について
http://replication.hatenablog.com/entry/2016/05/26/071409
https://www.techmatrix.co.jp/t/quality/coverage.html
* C0 : 命令網羅 (statement coverage) => 全命令を実行すれば100% * C1 : 分岐網羅 (branch coverage) => 全分岐を実行すれば100% => C1が100%の場合、C0も100%になる(逆は違う) * C2: 条件網羅率 (condition coverage) => 条件文における真偽が少なくとも1回は実行される => C2が100%であっても、C0、C1が100%になるとは限らないことに注意
実行例
nosetests --with-coverage --cover-branches --cover-html
出力結果
Name Stmts Miss Branch BrPart Cover ------------------------------------------------- calculator.py 4 1 2 1 67% ---------------------------------------------------------------------- Ran 1 test in 0.007s
参考文献
https://blog.chocolapod.net/momokan/entry/80
https://momijiame.tumblr.com/post/70768835863/python-%E3%81%AE-nose-coverage-%E3%81%A7%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B
http://t2y.hatenablog.jp/entry/20120209/1328740274
https://blog.chocolapod.net/momokan/entry/80
http://sandmark.hateblo.jp/entry/2017/10/18/003000
http://sbkro.github.io/entry/2015/03/05/nosetests-01/#.XiWnz8j7Q2w
https://takemikami.com/2016/06/11/nosepython.html
https://qiita.com/tomotaka_ito/items/1644db679264dcbb11f5
関連記事
単体試験 / unittest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/02/223658
単体試験 / unittest ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/03/31/000000
単体試験 / mox ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/19/000000
単体試験 / pytest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/13/224810