API経由でテスト結果を投入する

自動テストからのテスト結果を投入したい場合など、QualityForwardではAPI経由でテスト結果を投入することが可能です。以下にサンプルコードをご紹介いたします。

テスト結果を投入したい先のテストサイクルのURLが

https://cloud.veriserve.co.jp/projects/1030/test_phases/4657/test_suite_assignments/21546/test_cycles/28159

であったとします。

f:id:qf_support:20200319105605p:plain
空のテストサイクル

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部)をそれぞれ、headerspost_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経由で投入されました。


f:id:qf_support:20200319105627p:plain
テスト結果投入後


冒頭で述べた自動テストツールとの連携や、QualityForwardの様式にどうしても合わせられないテストケースに対するテスト結果の保存などに、ご活用を頂けましたら幸いです。

*1:利用規約にも記載がありますが、APIリクエストは1秒間に1リクエストを超えないように設計をお願い致します。将来的に、同一IPや同一APIキーからの秒間1,2リクエストを超えるアクセスがあった場合、一時的にエラーコードを返すようにアップデートが入る可能性があります。