GithubActionsでPythonの自動テストの実行について
GithubActionsは、コードをリポジトリにプッシュしたタイミングで自動的にテストを実行する便利なCI/CDツールです。本記事では、Pythonプロジェクトにおいて自動テストを実行する方法を解説します。
1. 必要なファイルを準備する
Pythonプロジェクトとテストコード
以下のような構成を例とします:
my_project/
├── src/
│ └── main.py
├── tests/
│ └── test_main.py
└── requirements.txt
各ファイルの説明
1.1 src/main.py
アプリケーションのメインコードを配置します。この例では簡単な関数を用意します:
# src/main.py
def add(a, b):
return a + b
1.2 tests/test_main.py
テストコードを配置します。pytest
を使用して関数の動作を検証します:
# tests/test_main.py
from src.main import add
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
1.3 requirements.txt
プロジェクトの依存関係を管理します。このファイルにはテストフレームワークやその他の必要なパッケージを記載します:
# requirements.txt
pytest
GithubActionsの設定ファイル
リポジトリのルートに.github/workflows/test.yml
を作成します。このファイルにCI/CDパイプラインを定義します。
2. GithubActionsの設定ファイルの記述
以下は.github/workflows/test.yml
の例です:
name: Python Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.13'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Set PYTHONPATH
run: echo "PYTHONPATH=$(pwd)" >> $GITHUB_ENV
- name: Run tests
run: pytest
3. ファイルの詳細解説
トリガーイベント
以下の設定で、main
ブランチへのプッシュやプルリクエストがトリガーとなります:
on:
push:
branches:
- main
pull_request:
branches:
- main
ジョブ設定
ジョブはubuntu-latest
上で実行されます。ステップごとに以下の操作を行います:
-
リポジトリをクローン:
uses: actions/checkout@v3
-
Pythonのセットアップ:
uses: actions/setup-python@v4 with: python-version: 3.10
-
依存関係のインストール:
python -m pip install --upgrade pip pip install -r requirements.txt
-
テストの実行:
pytest
4. 実行結果の確認
Githubのリポジトリページにアクセスし、Actions
タブを開きます。設定したワークフローが実行され、テスト結果が確認できます。
5. 注意点とベストプラクティス
-
Pythonバージョン: 必要なPythonバージョンを
setup-python
で正確に指定します。 -
依存関係管理:
requirements.txt
を正確に記載し、環境を再現可能にします。 - テストカバレッジの向上: より多くのケースを網羅するテストを書きましょう。
以上の手順で、GithubActionsを使ったPythonの自動テストが構築できます。効率的なCI/CDを目指して、ぜひ導入してみてください!