今回は、前回使用したテストコードを例に、coverage.pyによるカバレッジレポートとtrace2htmlによるカバレッジレポートを行ってみたいと思います。
coverage.pyによるコードカバレッジ
以下の手順でcoverage.pyでコードカバレッジを行います。
以下のコマンドでテストコードのカバー状況を確認することができます。
サフィックスに",cover"が付け加えられたソースファイルが出力されます。
テストで実行されなかった行には、行頭に「!」が付くのでカバレッジの状況を 具体的に確認できます。
trace2htmlによるコードカバレッジ
trace2htmlを利用すると、カバレッジのレポートをHTMLで出力してくれます。
以下のコマンドを実行してカバレッジレポートをHTMLに出力します。
出力されたHTMLをブラウザで確認すると以下のようにグラフィカルな表示で レポートが確認できます。
wget http://nedbatchelder.com/code/modules/coverage-2.80.tar.gz
以下の手順でcoverage.pyでコードカバレッジを行います。
$ python coverage-2.80/coverage.py -e $ python coverage-2.80/coverage.py -x testSuiteCalc.py test0Tasu5 (__main__.testCalc) ... ok test0Hiku5 (__main__.testCalc) ... ok test10Kakeru2 (__main__.testCalc) ... ok test10Waru2 (__main__.testCalc) ... ok ---------------------------------------------------------------------- Ran 4 tests in 0.002s OK $ python coverage-2.80/coverage.py -r -m Calc.py Name Stmts Exec Cover Missing ------------------------------------- Calc 15 14 93% 13
- "-e"オプションで前回実行のカバレッジのデータを一旦削除。
- "-x"オプションでユニットテストを実行。カレントに「.coverage」というテスト結果のデータが保存されます。
- "-r"オプションでレポート表示。上記例では、13行目がテストされていないことがわかります。
以下のコマンドでテストコードのカバー状況を確認することができます。
サフィックスに",cover"が付け加えられたソースファイルが出力されます。
テストで実行されなかった行には、行頭に「!」が付くのでカバレッジの状況を 具体的に確認できます。
$ python coverage-2.80/coverage.py -a Calc.py $ cat Calc.py,cover > class Calc: > def __init__(self): > self.intCount = 0 > def tasu (self, number = 1): > self.intCount = self.intCount + number > def hiku (self, number = 1): > self.intCount = self.intCount - number > def kakeru (self, number = 1): > self.intCount = self.intCount * number > def waru (self, number = 1): > self.intCount = self.intCount / number > def dummy (self): ! self.intCount = self.intCount > def population (self): > return self.intCount
trace2htmlによるコードカバレッジ
trace2htmlを利用すると、カバレッジのレポートをHTMLで出力してくれます。
wget http://pypi.python.org/packages/source/t/trace2html/trace2html-0.2.1.tar.gz
以下のコマンドを実行してカバレッジレポートをHTMLに出力します。
$ python trace2html-0.2.1/src/trace2html.py -w Calc --run-command testSuiteCalc.py test0Tasu5 (__main__.testCalc) ... ok test0Hiku5 (__main__.testCalc) ... ok test10Kakeru2 (__main__.testCalc) ... ok test10Waru2 (__main__.testCalc) ... ok ---------------------------------------------------------------------- Ran 4 tests in 0.003s OK report written to: /home/foo/bar/coverage_dir/index.html
出力されたHTMLをブラウザで確認すると以下のようにグラフィカルな表示で レポートが確認できます。
Leave a comment