TravisCI入門しました!

はじめに

Travis CIを利用し始めたので、 備忘録も兼ねてブログに書き込んでおきます。

利点

Travis CIを使うことによる利点は、

  • TravisCI側サーバーで設定した環境でテスト
  • テスト結果をメールなどで開発メンバーに通知
  • 連携しているホスティングサービスにデプロイ(AWSなど)

となります。

実行の流れ

具体的にTravis CIの設定〜実行の流れを書き下すと、以下の通りとなります。

  1. TravisCI登録し、指定したGithubのレポジトリ連携
  2. 連携したフォルダにTravisCI用に設定ファイルを作成
  3. githubにプッシュすると、設定した環境に応じてTravisCIがテスト実行
  4. テスト結果に応じて処理

1. についてはTravis CIはGUIが非常に素晴らしく、簡単なので割愛します!

TravisCI用設定ファイル作成

連携したレポジトリのルートディレクトリに以下のようなYAMLファイルを作成します。

language: python
python:
  - "3.5"
install:
  - pip install <パッケージ名>
script:
  - python py_test.py
after_success:
  - <slack通知>
  • python: はテストするプログラミング言語install:はインストールするパッケージを指定します 注)
  • scriptは実際のテストを行なう作業を記述します。今回は指定したファイルを実行します。
  • after_successとはテスト成功した後の処理を指します。今回はslack通知を記述しておきました。

注)今回はpython標準ツールを使っているので、本来はinstallの必要はありません。

testスクリプト

今回はunittestを用いて以下のように書いてみました!

import unittest 

class PyTest(unittest.TestCase):
    
    def test_equal(self):
        one = 1
        self.assertEqual(one,1, "one is 1")
    
    def test_not_equal(self):
        two = 2
        self.assertNotEqual(two,3,"2 not equal 3")
        
    def test_almost_equal(self):
        three = 3.1
        self.assertAlmostEqual(three,3,0,"3.1 almost equal 3")
    
    def test_assert_regex(self):
        sentence = "test作業はつまらない。じゃなくて、楽しいぞ〜"
        self.assertRegex(sentence,'test.+楽.{1,}〜$',"test作業:マッチ")
        
if __name__ == "__main__":
    unittest.main()

プッシュ後

連携したレポジトリをGithubにプッシュすると自動で指定したテスト (今回はpy_test.py)が実行されます。

テスト結果は以下のようにGUIで表示され、非常にわかりやすいです!

https://gyazo.com/9e1a250d7aacdfe0e96152cd57e847b4

テスト成功後

https://gyazo.com/da190212686c604753d973c3186c13b0

テストが成功したので自動でスラックに投稿されています。(.travis.ymlで記述) チーム開発している時にはテスト結果をいちいち通知を手動で書く必要がなく便利です。