スポンサーリンク

[python] unittestの結果をcoverageを使ってカバレッジで見る。

カバレッジとは

どのような範囲で、どの程度詳しくテストが行われたかを示す指標。(コトバンク引用)

 

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のリンクをクリックすると下記のように表示されます。

どこの行が、実行したのか、実行されていないのかが一目でわかるように表示されます。

これを使えば、テストされていない箇所がどこなのか一発でわかります。

 

まとめ

カバレッジの良いところは、テストの網羅率がわかるところです。

また、どこの箇所が網羅されていないのかがわかれば、そこをテストすべきということがわかります。

関連記事