0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actioins でユニットテストを自動化

Posted at

概要

  • pull request をした時に GutHub Action でユニットテストを試してみます。

テストコードを準備

階層
.
|- sample.py
|- tests - test_sample.py
|- .github - workflows - unit_test.yml
  • 簡単な関数を作ります
sanple.py
def add_num(num1, num2):
    return num1 + num2
  • add_num に対してユニットテストを準備します
test_sample.py
import unittest
import sample

class TestSample(unittest.TestCase):

    def test_add_num(self):
        result = sample.add_num(2, 3)

        self.assertEqual(5, result)
  • テストを実行してみる (tests配下のテストを実行するコマンド)
python -m unittest discover tests
結果
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

GitHub Actions のファイルを準備する

unit_test.yml
name: unittest sample
on:
  pull_request:
  workflow_dispatch:
jobs:
  unittest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: setup python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
          architecture: 'x64'
      - name: get python version
        run: python -V
      - name: unittest for python
        run: python -m unittest discover tests

GitHub Actions を実行

プルリクを作成すると、GitHub Actions が実行されます。下の画像が実行結果です。

スクリーンショット 2022-07-10 17.33.26.png

ユニットテストが失敗するパターンを試してみます。

スクリーンショット 2022-07-10 17.36.54.png

ユニットテストが失敗しても、マージ保護がないと、マージ出来てしますので、保護します。

  • settings -> branches -> Add rule
  • Require status checks to pass before merging にチェックを入れる
  • GitHub Actions の jobs 名をセットする
    スクリーンショット 2022-07-10 17.42.16.png

これで、テスト失敗したコードが Default ブランチへマージされることを防げる様になるみたいです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?