私が現在開発しているプロジェクトでは、かなりしっかりとテストコードを書いています。
ここまでしっかりとしたテストコードを書いたんなら、カバレッジとやらもかなりイイ感じになってんじゃね?と思い、今まで計測したことのないカバレッジを見てみることにしました。
私はテストコードを書くためにunittest
を使用しています。
unittest --- ユニットテストフレームワーク
しかし、これだけではカバレッジを計測することはできません。
カバレッジを計測するためには別のパッケージが必要です。
今回はその名もずばりcoverage
というパッケージを使いました。
Coverage.py
こちらは、私が理解できた範囲では、python3 hoge.py
のようにcoverage hoge.py
と実行すると、そのとき通ったコードの割合を記録してくれるという使い方をするカバレッジ測定ツールのようです。
開発しているプロジェクトを普通にpy main.py
と実行しただけでは当然全てのコードを通ることはありません。
従って、ユニットテストを実行するときにこのcoverageを利用してみましょう。
すなわち、いつもはこんな感じでテストをしていたところを↓
> py -m unittest discover code.unit_tests
次のように変更するのです↓
> coverage run -m unittest discover code.unit_tests
このようにして実行し、記録して、そのあともう一度コマンドを実行して結果を表示します。
> coverage report -m
実際に下記のようにカバレッジを測定することができました。
やった~!カバレッジの計測できたよ~! pic.twitter.com/L2Tz6n03Hj
— ヒト🏃♀️速バラ撒きおじさん/あつし (@Anaakikutsushit) July 11, 2019
割と注意深くテストを書いていたつもりだったんですが、一か所だけカバレッジが6割弱のモジュールがありますね。発見出来てよかった。
その後、コードの見直しを行って見事オール100を達成。
小さなプロジェクトとは言え、やはり「100」が出ると気持ちがいいものですね。
ああ~オール100出て気持ちいいっす~ pic.twitter.com/jrJZuuyQjR
— ヒト🏃♀️速バラ撒きおじさん/あつし (@Anaakikutsushit) July 12, 2019
今日はこんなところで。