カバレッジとは
どのような範囲で、どの程度詳しくテストが行われたかを示す指標。(コトバンク引用)
coverageのインストール
pythonでカバレッジを使うにはcoverageが必要になります。
pip install coverage
pythonプログラムの準備
下記のサンプルを使って試してみます。
テスト対象のファイル
class Calc: """ テスト対象用クラス 計算クラス """ def tasu(self, a, b): """ 足し算メソッド """ return a + b def hiku(self, a, b): """ 引き算メソッド """ return a - b
テストするpythonファイル
import unittest from calc import Calc class TestCalc(unittest.TestCase): def test_tas(self): """足し算 """ c = Calc() ans = c.tasu(1, 2) self.assertEqual(ans, 3) if __name__ == "__main__": unittest.main()
coverageの使い方
下記の通りに、pythonコマンドでなくcoverageコマンドでpythonのテストを実行させます。
coverage run test_calc.py(テストファイル)
実行後に、ワークスペースに.coverageというファイルが作成されています。
簡単にカバレッジ結果を取得する場合は下記のコマンドで取得できます。
coverage report
結果
左から、ファイル名、ステートメント、失敗数、網羅率のようです。
Name Stmts Miss Cover ------------------------------------------- unittest\calc.py 5 1 80% unittest\test_calc.py 9 0 100% ------------------------------------------- TOTAL 14 1 93%
上記の結果だとわかりにくいかもしれません。
そのため別の方法を紹介します。
下記のコマンドを実行してみてください。
coverage html
上記を実行するとhtmlcovというディレクトリがワークスペース直下に作成されます。
そこにあるindex.htmlをブラウザで開いてください。
そうすると、下記のように表示されます。
unittest\calc.pyのリンクをクリックすると下記のように表示されます。
どこの行が、実行したのか、実行されていないのかが一目でわかるように表示されます。
これを使えば、テストされていない箇所がどこなのか一発でわかります。
まとめ
カバレッジの良いところは、テストの網羅率がわかるところです。
また、どこの箇所が網羅されていないのかがわかれば、そこをテストすべきということがわかります。