Cloud BuildでPythonの単体テストを自動化する
はじめに
Cloud Buildは、Google Cloud のCI/CDサービスであり、アプリケーションの単体テストの自動化に最適なツールです。この記事では、Cloud Buildを使用してPythonアプリケーションの単体テストを自動化する方法を解説します。
単体テストは、アプリケーションの品質を確保するために欠かせないものです。しかし、手動でテストを実行すると時間がかかり、人為的なミスも起こりやすくなります。そのため、自動化することでテストの効率性とコードの正確性を向上させることができます。
この記事では、Pythonの単体テストの自動化について、以下の手順で解説します。
- テスト用のコードの作成
- Cloud Buildトリガーの作成
- Cloud Buildでのビルドとテストの実行
1. テスト用のコードの作成
コードを置くディレクトリの構成は以下の通りです。
project/
├── ci.yaml
├── src/
│ └── add_numbers.py
└── tests/
└── test_add_numbers.py
- Cloud Buildの設定を書いた構成ファイルを、ci.yamlという名前で置きます。
- srcディレクトリ配下に、テスト対象の関数を記載したadd_numbers.pyというファイルを置きます。
- testsディレクトリ配下に、テスト内容を記載したtest_add_numbers.pyというファイルを置きます。
add_numbers.py
テスト対象の関数が書かれているadd_numbers.pyの中身は、足し算をする関数です。
def add_numbers(x, y):
return x + y
test_add_numbers.py
テスト内容を記載したtest_add_numbers.pyでは、srcディレクトリ配下のadd_numbers.pyから、add_numbers関数を参照し、2つの足し算テストを実行します。
テストには、pytestを使用しています。
from src.add_numbers import add_numbers
def test_add_numbers():
assert add_numbers(2, 3) == 5
assert add_numbers(100, -100) == 0
ci.yaml
Cloud Buildの設定を書いたci.yamlの中身は以下の通りです。
使用するpythonイメージは、軽量な 'python:3.11.2-slim'にしました。
pipでpytestをインストールした後、testsディレクトリ配下にあるファイルを対象にテストを実行します。
また、単体テストの量が増えると、実行時間も延びる可能性が高いため、timeout値を引き上げておきます。
steps:
- name: 'python:3.11.2-slim'
entrypoint: 'bash'
args:
- '-c'
- |
pip install --upgrade pip
pip install pytest
python -m pytest tests -v
timeout: 600s
2. Cloud Buildトリガーの作成
テストコードの準備ができたら、 Cloud Buildトリガーを作成していきます。
トリガーのパラメータ値は、任意の値でよいのですが、この記事では以下で作成しました。
パラメータ名 | パラメータ値 |
---|---|
イベント | ブランチに push |
リポジトリ | ソースコードのあるGitHubなどのリポジトリ |
構成 | Cloud Build 構成ファイル(yaml または json) |
ロケーション | リポジトリ /ci.yaml |
3. Cloud Buildでのビルドとテストの実行
トリガーの作成が完了したら、リポジトリにコードをpushして、テストが自動で実行されるか確認しましょう。
Cloud Buildが起動して、単体テストに成功すると以下のようになると思います。
以上で、Cloud Buildによる単体テストの自動化ができました。
終わりに
この記事では、Cloud Buildを使用してPythonアプリケーションの単体テストを自動化する方法を解説しました。テスト用のコードの作成から、Cloud Buildのセットアップ方法、ビルドとテストの実行までの手順を紹介しました。
Google Cloudを使用している場合、Pythonアプリケーションの品質向上に向けて、ぜひCloud Buildを導入してみてください。
参考
Discussion