自動テストからのテスト結果を投入したい場合など、QualityForwardではAPI経由でテスト結果を投入することが可能です。以下にサンプルコードをご紹介いたします。
※Python 3.7にて動作を確認しています。
※フリープランではAPIを使用することはできません
テスト結果を投入したい先のテストサイクルのURLがであったとします。
https://cloud.veriserve.co.jp/projects/1030/test_phases/4657/test_suite_assignments/21546/test_cycles/28159
空のテストサイクル
APIリクエストを発行するライブラリには Python で一般的な requests モジュールを利用します。また、APIキーは yaml に分離します。qf_api_entryurlとして、テストフェーズIDから、テストサイクルIDまでを記載し、テスト結果を投入するAPIのエントリポイントを指定し、querystring に APIキーを渡します。
import requests import yaml yaml_dict = yaml.load(open("apikey.yaml").read()) api_key = yaml_dict["key"] qf_api_entryurl = "https://cloud.veriserve.co.jp/api/v2/test_phases/4657/test_suite_assignments/21546/test_cycles/28159/test_results?api_key=" + api_key
次に、requests モジュールでPOSTリクエストを発行するためのヘッダ、データ(Body部)をそれぞれ、headers、post_dataとして指定し、最後に requests.post()でPOSTリクエストを発行します。*1
最低限必要なフィールドは、test_result[test_case_no]、test_result[result]、test_result[user_id]、test_result[executed_at](テスト実行日)の4つです。このうち、test_result[user_id]については、IDで指定する必要があります。プロジェクトに属するユーザのIDは、以下のAPIから取得できます。
https://cloud.veriserve.co.jp/api/v2/users?api_key=api_key
これらを含めたコードは以下の通りです。
headers = { "Content-Type":"application/x-www-form-urlencoded" } post_data = { "test_result[test_case_no]":1, "test_result[result]":1, "test_result[user_id]":191, "test_result[executed_at]":"2020-02-28", "test_result[content1]":"APIからのテスト結果送信です" } r_post = requests.post(qf_api_entryurl, headers=headers, data=post_data)
以下のように、テスト結果がAPI経由で投入されました。
テスト結果投入後
冒頭で述べた自動テストツールとの連携や、QualityForwardの様式にどうしても合わせられないテストケースに対するテスト結果の保存などに、ご活用をいただけましたら幸いです。
*1:利用規約にも記載がありますが、APIリクエストは1秒間に1リクエストを超えないように設計をお願い致します。将来的に、同一IPや同一APIキーからの秒間1,2リクエストを超えるアクセスがあった場合、一時的にエラーコードを返すようにアップデートが入る可能性があります。