GitHubにpush済みのpythonコードのテストカバレッジを計測してみる。

DIY太陽光発電システム監視用のPythonドライバをCIしてみた記事の続編で、今回はpythonコードのカバレッジ(テストのカバー率)を計測します。

コマンドラインでカバレッジを計測する

まずはテストを実行

以下のようなtest runnerコードを毎回書くのは面倒なので、noseパッケージをpip installし、nosetestsコマンドを使います。

nosetestsは、noseパッケージをpip installすると使えるようになるコマンドです。

nosetestsのテストケースの見つけ方を見ると分かりますが、とりあえずunittest.TestCaseのサブクラスをかき集めて実行してくれるようです。

setup.pyのtest_suiteに以下のように書いておき、noseにtest suiteをかき集めてもらって、setup.py経由でテスト実行することも可能です。

テストカバレッジ計測

カバレッジを計測するには、以下の–with-coverageオプションをつけます。

命令網羅だけでなく、–cover-branchesオプションで分岐網羅もできるようです。

カバレッジ計測結果は、同ディレクトリ下の.coverageファイルに記録されます。

テストカバレッジレポート作成

coverageパッケージとコマンドを使って、カバレッジレポートを生成します。
pip installしてヘルプ表示すると、以下のようなサブコマンドが用意されていることが分かります。

カバレッジ計測結果が記録された.coverageファイルを読み込み、レポートを表示することができます。

–includeオプションで対象モジュールを絞らないと、テスト対象以外の依存モジュールも一緒くたにレポートしてしまい、煩雑になるのでご注意を。

コード内のどのパスがカバーできて、どのパスがカバーできていないのかを視覚的に確認できる、HTML形式のレポートも生成できます。

こんな感じです。

Webサービスを使って自動的にカバレッジを計測する

前置きが長くなりましたが、ここからが本題です。

前回紹介したTravisCIと連携しやすいCoverallsを使います。

.travis.ymlが設定済みであれば以下のような内容だったと思いますが、

これに以下を追記して、

test-requirements.txtには以下を追記します。

ほとんどcoveralls-pythonのREADMEに従うだけなんですけどね。

これでgithubリポジトリにpushする度、自動的にTravisCIでテストを回し、自動的にCoverallsでカバレッジ計測してくれます。

バッジの表示

Coverallsのカバレッジ計測結果バッジ

coverallsのREPOSで、カバレッジ計測後に対象のリポジトリのリンクに飛び、画面上の方に「BADGE YOUR REPO: TSMPPT60_DRIVER」というリンクがあるので、そこでバッジのURLを取得できます。

MARKDOWN形式他、一通り揃っているので、環境に合わせてコピペして使ってください。

GitHubのREADMEにも、以下のようなバッジを貼ることができます。

Coverage Status

いろいろなバッジ

TravisCIやCoverallsのようなバッジをREADMEに貼ると、なんだか他の情報も同じようなバッジで表示したくなります。よね?

そこで、shields.ioというサービスがあります。

上記リンク先の通り、以下のようなフォーマットで様々なバッジを自分で作ることができます。

例えば以下のようにすると、

以下のように表示されます。

python

あまり意味はないですが、こんなバッジも作れちゃいます。

hoge
hoge
hoge

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする