Robot Framework は、オープンソースの汎用的な自動化フレームワークです。このフレームワークは、テストの自動化とロボティック プロセス オートメーション (RPA) に利用できます。このチュートリアルでは、TestRail CLI を使用して、Robot Framework の自動テスト実行で生成されたテスト結果を TestRail に統合する方法を説明します。統合によって、自動テストの結果を中央で管理し、TestRail が提供するすべての解析およびレポート機能を活用できます。
概要
このチュートリアルでは、サンプル プロジェクトを使用して、TestRail CLI と互換性がある Robot Framework の自動テスト プロジェクトをセットアップし、生成されたテスト結果をアップロードする手順を案内します。
このチュートリアルを通して読むと、以下のことができるようになります。
-
- Robot Framework プロジェクトから Selenium を使用してテストを実行する
- TestRail CLI をインストールする
- TestRail インスタンスを設定する
- CLI を実行する
- TestRail でテスト ケースとテスト結果を確認する
前提条件
Selenium を使用してブラウザーを操作する Robot Framework プロジェクトをインストールし、実行するのに必要なものは、Python と Chromedriver だけです。テスト結果をインポートするのに使用する TestRail CLI も Python で開発されたツールであるため、Python があれば TestRail もインストールして実行できます。
| 前提条件 | 説明 |
|---|---|
| Python 3.10.4 | OS に合ったバージョンをダウンロードし、インストール ウィザードの指示に従います。正常にインストールされたことを確認するには、コマンド ラインから python --version および pip --version コマンドを実行します。すると、バージョンが出力されます。 |
| Chromedriver | 注意: Chrome バージョン 115 以上の場合、chromedriverをインストールする必要はありません。Chrome バージョン 114 以下の場合は、現在の Chrome ブラウザーのバージョンに合ったバージョンをダウンロードしてください。コマンド ラインからアクセス可能なフォルダーに Chromedriver を配置する必要があります。アクセス可能なフォルダーは OS によって異なる場合があります。正常にインストールされたことを確認するには、コマンド ラインから chromedriver --version コマンドを実行します。すると、バージョンが出力されます。 |
サンプル プロジェクトのインストール
まず、サンプル プロジェクトのコードを取得し、必要な依存ライブラリをインストールします。
-
- サンプル プロジェクトをクローンまたはダウンロードします。
- プロジェクトのルート フォルダーでコマンド プロンプトを開いて次のコマンドを実行します。
$ pip install -r "requirements.txt"
| 要件 | 説明 |
|---|---|
| robotframework | Robot Framework – 汎用的なキーワード駆動型自動化フレームワーク |
| robotframework-seleniumlibrary | Selenium Library – ブラウザーを操作するための Web テスト ライブラリ |
サンプル プロジェクトの確認
任意の IDE を使用してサンプル プロジェクトを開き、テスト ファイルを確認します。このチュートリアルでは、実行結果のインポート方法に集中できるよう、自動テストのコードはシンプルにしてあります。
TestRail でのテスト ステップの表示を最適化するには、下のサンプルのように、自然言語だけを使用してトップ レベルのキーワードを作成し、テスト ステップを記述する必要があります。また、テスト ケースやテスト結果の情報を充実させるために、ドキュメントにプロパティを追加することもできます。新しい行を開始し、 - testrail_property_name: value のようなパターンを使用すると、TestRail CLI によって解析されます。サポートされているプロパティは JUnit と同じで、マニュアルの JUnit から TestRail へのマッピング で確認できます。
設定したいプロパティの値が実行時にしかわからない場合 (例: 添付ファイルパス) は、次の例のようなキーワードを使って動的にドキュメントに追加できます。
サンプル プロジェクトの実行
コマンド プロンプトで次のコマンドを実行し、Robot Framework のテストを実行して結果を reports フォルダーに保存します。
$ robot -d reports "./tests"
ロボット コマンドの呼び出しが正常に実行されると、レポート フォルダーにテスト結果があるのが確認できます。
Robot Framework は次の 3 つのレポート ファイルを自動生成します: report.html、log.html、output.xml。report.html ファイルを開くと、下の図のような見やすいフォーマットの Robot Framework HTML レポートを参照できます。
TestRail にテスト結果を統合する場合、実質的に重要なファイルは output.xmlです。このファイルには、テスト中に何が起きたかを示す構造化された詳細なモデルが含まれます。これにはドキュメントに追加したプロパティも含まれ、TestRail に反映されます。次のステップでは、このファイルを TestRail CLI で解析し、テスト ランを作成してテスト結果を TestRail へアップロードします。
<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 6.1 (Python 3.10.5 on win32)" generated="20230912 10:52:39.727" rpa="false" schemaversion="4">
<suite id="s1" name="Tests" source="tests">
<suite id="s1-s1" name="Footer-Tests" source="tests\footer-tests.robot">
<test id="s1-s1-t1" name="Verify Presence Of Social Links" line="6">
(...)
<status status="PASS" starttime="20230912 10:52:39.958" endtime="20230912 10:52:47.980"/>
</test>
<status status="PASS" starttime="20230912 10:52:39.743" endtime="20230912 10:52:47.980"/>
</suite>
<suite id="s1-s2" name="Homepage-Tests" source="tests\homepage-tests.robot">
<test id="s1-s2-t1" name="Verify Presence Of Header Links" line="6">
(...)
<status status="PASS" starttime="20230912 10:52:47.994" endtime="20230912 10:52:52.521"/>
</test>
<test id="s1-s2-t2" name="Verify Presence Of Demo Link" line="15">
<kw name="Open TestRail Homepage" library="keywords">
<status status="PASS" starttime="20230912 10:52:52.521" endtime="20230912 10:52:54.445"/>
</kw>
<kw name="Verify Header Demo Link" library="keywords">
<status status="FAIL" starttime="20230912 10:52:54.446" endtime="20230912 10:52:59.946"/>
</kw>
<kw name="Click Demo Link" library="keywords">
<status status="NOT RUN" starttime="20230912 10:52:59.947" endtime="20230912 10:52:59.947"/>
</kw>
<kw name="Verify Demo Page URL" library="keywords">
<status status="NOT RUN" starttime="20230912 10:52:59.947" endtime="20230912 10:52:59.947"/>
</kw>
<kw name="Close Test Browser" library="keywords" type="TEARDOWN">
<status status="PASS" starttime="20230912 10:52:59.948" endtime="20230912 10:53:03.127"/>
</kw>
<doc>Verifies header contains link to request a demo - Intentionally failing
- testrail_case_field: refs:TR-1
- testrail_case_field: priority_id:2
- testrail_result_field: custom_environment:qa
- testrail_attachment: C:\Github\gurock\automation-frameworks-integration\samples\robotframework\robotframework-selenium\reports\failure-2.png</doc>
<status status="FAIL" starttime="20230912 10:52:52.521" endtime="20230912 10:53:03.127">Element 'css=.breakdance-menu-list [href*='/invalid/']' not visible after 5 seconds.</status>
</test>
</suite>
</suite>
</robot>
TestRail への結果のインポート
テストを実行し、output.xml ファイルを生成したら、TestRail CLI を使用して簡単にテスト結果 (およびテスト ケース) を TestRail にインポートできます。そうすると、自動テストの実行を可視化し、実際にどのようにアプリケーションがテストされているかに関する概要をすべて TestRail 内で参照できます。
TestRail CLI のインストール
すでにマシンに Python がインストールされている場合、TestRail CLI をインストールするには、コマンド ラインで次のコマンドを実行するだけです。
$ pip install trcli
TestRail の設定
次に、下の手順に従って TestRail インスタンスを設定する必要があります。
-
- [管理] > [サイト設定] に移動して [API] タブをクリックし、[API の有効化] オプションをオンにして TestRail API を有効化します。
- 自動テスト ケースのコードと実際の TestRail のケースをマッピングするためのカスタム フィールドを作成します。それには、[管理] > [カスタマイズ] に移動して [フィールドの追加] をクリックします。フィールド作成画面に移動したら、下記の 2 つの要件に従ってフィールドを作成します。
- システム名は automation_id
- [タイプ] は Text にする必要があります。
TestRail への結果の送信
TestRail CLI をインストールし、TestRail インスタンスの設定が完了したら、次のような 1 行のコマンドを実行してテスト結果をアップロードできます。
$ trcli -y \ > -h https://INSERT-INSTANCE-NAME.testrail.io \ > --project "My Project" \ > --username INSERT-EMAIL \ > --password INSERT-PASSWORD \ > parse_robot \ > --title "Robot Framework Automated Test Run" \ > -f reports/output.xml
デフォルトの場所を変更した場合、-f オプションの後のファイル名がレポート ファイルへのパスに一致している必要があります。その他のオプションはすべて TestRail インスタンスおよびプロジェクトに合わせます。その他のコマンドライン オプションは、次のコマンドを実行して組み込みの CLI ヘルプで確認できます。
$ trcli --help $ trcli parse_robot --help
TestRail での結果の可視化
TestRail プロジェクトのテスト ケース ページに移動すると、テスト結果レポートに含まれていたテストに対応するテストケースが TestRail によって自動的に作成されていることがわかるでしょう。レポートのテストごとにスイートの階層の name 属性および name 属性を組み合わせて一意の Automation ID を追加していることに注目してください。この Automation ID を使用して自動化コードのテストと TestRail のテスト ケースをマッピングします。つまり、TestRail CLI を実行するたびに、TestRail の既存のテスト ケースと比較し、該当する Automation ID を持つテスト ケースがない場合にだけ新しいテスト ケースを作成します。
[テスト ランと結果] ページでは、Robot Franework Automated Test Run という名前のテスト ランが作成されたのを確認できます。テスト ランを開き、各自動テスト結果の詳細をドリルダウンします。下の図に示すように、テスト自動化フレームワークが出力したエラー メッセージもテスト結果に登録されているため、テストが失敗した理由の高度な解析が可能です。




