MagicPodで実行したテストの結果をGitHub Actionsを通じてテスト管理ツールのTestRailに自動で登録する方法について解説します。本ページはテクマトリックス株式会社が作成したブログ記事に基づいて作成しています。サンプルコードはGitHubのリポジトリにて公開しています。
目次
1. 概要
本ページでは、MagicPodで作成した2つのテストケースをChrome, Edge, Firefoxの3パターンで実行し、計6件のテスト結果をTestRailに登録する処理を例として解説します。CIツールとしてはGitHub Actionsを利用し、テスト実行からTestRailへの結果登録までを1つのジョブとして実行します。
結果登録までの流れ
- TestRailのWeb API経由でテスト結果を登録するためのテスト計画を作成する
- MagicPodのWeb API経由でテストを実行する
- TestRailのWeb API経由でテストランに各テスト結果を登録する
GitHub Actionsの実行結果画面
TestRailに登録されたテスト結果
MagicPodのテスト結果(Chrome)
2. 事前準備をする
TestRail, MagicPod, GitHub Actionsで必要となる準備作業をそれぞれ説明します。
2-1. TestRail
2-1-1. テスト計画で使用する設定を追加する
Chrome, Edge, Firefoxの3つの設定を追加してください。追加方法についてはTestRailのマニュアルをご確認ください。
TestRailの設定追加画面
2-1-2. カスタムフィールドを追加する
TestRailのテストケースとMagicPodのテストケースと紐づけるために「MagicPod_URL」というカスタムフィールドを追加してください。
ラベル: MagicPod_URL システム名: magicpod_url タイプ: URL (link)
追加方法についてはTestRailのマニュアルをご確認ください。
TestRailのテストケース画面
2-1-3. テストスイートおよびテストケースを作成する
TestRailでテストスイートおよびテストケースを作成してください。今回の例ではテストスイート(S3:TestRail)に2つのテストケース(C9、C11)を作成しています。
TestRailのテストスイート画面
各テストケースには2-1-2. カスタムフィールドを追加するで追加した「MagicPod_URL」フィールドにMagicPodのテストケースURLを登録してください。このURLを元にMagicPodのテストケースとの紐付けを行うため、必ず登録してください。
テストケースURL例 https://app.magicpod.com/<org_name>/<project_name>/4/
テストスイートおよびテストケースの作成方法についてはTestRailのマニュアルをご確認ください。
2-2. MagicPod
2-2-1. テストケースを作成する
MagicPodでテストケースを作成してください。今回の例ではこの2つのテストケース(#4、#5)を作成しています。
MagicPodのプロジェクト画面
2-2-2. 一括実行設定、パターンを作成する
ここでは「1. Default」設定内に「Chrome」「Firefox」「Edge」の3つの端末パターンを作成し、各パターンの名前に対応するブラウザを設定しています。
パターンの作成方法はこちらのヘルプページを参照してください。
2-3. GitHub Actions
2-3-1. シークレットを登録する
以下の項目をリポジトリのシークレット(リポジトリ環境内に作成する秘密の変数)に登録してください。
登録方法についてはGitHub Actionsのドキュメントをご確認ください。
シークレット名 | 説明 |
MAGICPOD_API_TOKEN |
MagicPodのAPIトークン |
TESTRAIL_PASSWORD |
TestRailのパスワード |
GitHubのリポジトリのシークレット追加画面
3. スクリプトを作成する
まずはスクリプトをGitHubのリポジトリからダウンロードしてください。
ここからはGitHub Actionsのジョブ定義ファイルである.github/workflows/magicpod_test.yml(以下ymlファイル)のステップに沿って説明します。
GitHub Actionsの実行結果画面
3-1. Pythonをインストールする
(作業は不要です)本スクリプトの一部はPythonで書かれているため、PythonおよびHTTPライブラリであるrequestsをインストールするステップを定義しています。
## .github/workflows/magicpod_test.yml
- name: Set up Python
uses: actions/setup-python@v4
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip install requests
3-2. TestRailでテスト計画を作成する
テスト結果を登録するために、事前にTestRailに「テスト計画」及び「テストラン」を作成する必要があります。
testrail_prepare.pyにはTestRailのテスト計画をTestRailのWebAPIを使用して作成する処理が記述されています。そのため、テスト計画作成に必要な情報をtestrail_prepare.py内に定義してください。WebAPIで登録可能な情報についてはテスト計画のドキュメントを確認してください。
補足:config_idsの確認方法
config_idはテスト計画の「設定」のことを指し、今回の例ではChromeなどのブラウザ名のidにあたります。config_idについてはTestRailのWebAPIのget_configsメソッドで確認可能です。
ymlファイルにTESTRAIL_URL, TESTRAIL_USERを定義してください。
## .github/workflows/magicpod_test.yml
- name: Prepare testplan
env:
TESTRAIL_URL: <YOUR URL>
TESTRAIL_USER: <YOUR USER ACCOUNT>
TESTRAIL_PASSWORD: ${{ secrets.TESTRAIL_PASSWORD }}
run: python testrail_prepare.py
3-3. magicpod-api-clientをインストールする
(作業は不要です)ymlファイルには以下のようにdownload_magicpod_api_client.shを実行するよう設定しています。magicpod-api-clientについてはこちらのヘルプページも併せてご確認ください。
## .github/workflows/magicpod_test.yml
- name: Install magicpod-api-client
env:
MAGICPOD_API_TOKEN: ${{ secrets.MAGICPOD_API_TOKEN }}
run: bash download_magicpod_api_client.sh
3-4. MagicPodでテストを実行する
ymlファイルにMAGICPOD_ORGANIZATION_NAME, MAGICPOD_PROJECT_NAME, MAGICPOD_TEST_SETTING_IDを定義してください。ここで指定した一括実行設定を元にテストが実行されます。今回のケースでは、2個のテストケースを全3パターンで実施するため合計6テストが実行されます。
## .github/workflows/magicpod_test.yml
- name: Run MagicPod
env:
MAGICPOD_API_TOKEN: ${{ secrets.MAGICPOD_API_TOKEN }}
MAGICPOD_ORGANIZATION_NAME: <YOUR ORGANIZATION_NAME>
MAGICPOD_PROJECT_NAME: <YOUR PROJECT_NAME>
MAGICPOD_TEST_SETTING_ID: <YOUR SETTING_ID>
run: python run_magicpod.py
3-5. MagicPodのテスト結果をTestRailに登録する
ymlファイルにTESTRAIL_URL, TESTRAIL_USERを定義してください。
- name: Add test results to TestRail
env:
TESTRAIL_URL: <YOUR URL>
TESTRAIL_USER: <YOUR USER NAME>
TESTRAIL_PASSWORD: ${{ secrets.TESTRAIL_PASSWORD }}
run: python testrail_add_test_result.py
4. GitHub Actionsでジョブを実行する
今回のスクリプトではGitHubにコードをプッシュする度に自動でMagicPodの実行とTestRailへのテスト結果の追加が行われます。プッシュ以外にもpull_requestやdeploymentなどのイベントをトリガーとすることが出来ます。詳しくはGitHub Actionsドキュメントをご確認ください。