Posts on CI

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

DIY太陽光発電システム監視用のPythonドライバをCIしてみた記事の続編で、今回はpythonコードのカバレッジ(テストのカバー率)を計測します。 コマンドラインでカバレッジを計測する まずはテストを実行 以下のようなtest runnerコードを毎回書くのは面倒なので、noseパッケージをpip installし、nosetestsコマンドを使います。 import unittest if __name__ == "__main__": all_tests = unittest.TestLoader().discover("./", "test_*.py") unittest.TextTestRunner(verbosity=1).run(all_tests) nosetestsは、noseパッケージをpip installすると使えるようになるコマンドです。 nosetestsのテストケースの見つけ方を見ると分かりますが、とりあえずunittest.TestCaseのサブクラスをかき集めて実行してくれるようです。 tsmppt60_driver $ nosetests -v test_init (test_base_controller.TestChargeControllerStatus) ... ok test_compute_scaler_current (test_base_management.TestMb)…

GitHubにpush済みのpythonコードをCIしてみる。

DIY太陽光発電システムの発電状況をグラフ化してチェックできるようにしていますが、背後では、Pythonというプログラミング言語で記述したソフトウェアが動いています。 PyPIに公開しているので、ぜひ使ってやってください。こんな感じ↓で見つかります。 $ pip search tsmppt60-driver tsmppt60-driver - Python module to get status of your solar charge controller TS-MPPT-60. …事前にTS-MPPT-60を入手する必要はありますが…。 PyPIで公開するに当たって、さすがにテストは真面目に書かないとまずかろうと思い、unittestやdoctest、nose、MiniMockを使ってみました。 個別の詳細はまた今度に回して、今回はCI(Continuous Integration)、継続的インテグレーションネタです。 有名なCIツールにJenkinsがありますが、今回作ったtsmppt60-driverはgithubにOSSとしてpushしてあるので、流行りのTravisCIを使わせて頂きました。 TravisCIを使うに当たって、全体の流れは以下のような感じでになります。 TravisCIアカウント登録(GitHubアカウントとの連携可能) TravisCIのWeb設定画面上で、CI対象のGitHubリポジトリを選択 TravisCIのヘルプに従って設定した.travis.ymlファイルをGitHubリポジトリに追加 githubアカウントを持っていれば、ブラウザ上で簡単なGUI操作のみで、githubへのpushをhookして自動ビルド&テストしてくれる上、のようなバッジをREADMEに表示することもできます。 その設定は、以下のようにとても簡単です。 まずはTravisCIに飛び、Sign…