カバレッジを計測する
テスト書いたらカバレッジも計測してみたい
この間なにかでPythonではCoverageというツールで計測できるというのを見た
pip installでインストールして
$ pip install coverage
...
Successfully installed coverage-4.5.2
coverage runでカバレッジを計測
$ coverage run test-shape.py
............................
----------------------------------------------------------------------
Ran 28 tests in 0.004s
OK
coverage reportでレポートを出力
$ coverage report
Name Stmts Miss Cover
-----------------------------------
shape.py 67 3 96%
test-shape.py 130 0 100%
-----------------------------------
TOTAL 197 3 98%
100%になってないな
どこ通ってないんだっけ
っていうときは
coverage annotate すると、"ファイル名,coverage"というファイルができるのでそれを見る
$ coverage annotate shape.py
$ cat shape.py,cover
#! /usr/bin/env python3
> from typing import List
> from math import sqrt
...
> def __eq__(self, other: object) -> bool:
> if not isinstance(other, Point):
! return NotImplemented
> return float_equal(self.x, other.x) and \
> float_equal(self.y, other.y)
...
そうかそうか
確かにそこはテストしてなかった
...(省略されました)
テスト追加
self.assertFalse(self.p1 == 3)
これでOK
$ coverage report
Name Stmts Miss Cover
-----------------------------------
shape.py 67 0 100%
test-shape.py 133 0 100%
-----------------------------------
TOTAL 200 0 100%
なおcoverage htmlしてhtmlcov/index.htmlをブラウザで開くと
もっとキレイなレポートが見えます
ファイル名をクリックすればannotate相当の表示
overage html
open htmlcov/index.html # MacOSの場合
shape.pyを修正したらmypyかけてcoverageかけて、か
こういうのも便利なツールがありそう
これくらいならシェルスクリプトとかmakeで済むけど