我正在实现脚本来整合 Testcomplete 和 Testrail 以更新结果。我已成功创建 Testrun,并且可以通过提供 caseId 将特定测试用例添加到 testrun。我为此使用了 Testrail API。
问:现在我只想将特定的测试用例添加到 testrun 中,在 testrail 套件中标记为“can_be_automated = yes”,我坚持在这部分。为此实现了一些脚本,但它没有占用特定的测试用例。过滤“can_be_automated = yes”不起作用。使用 JavaScript
有人可以帮我吗?如果有人有脚本,请分享它会很有帮助
提前致谢
根据问题的描述,可以将其分为两个不同的任务:
在您的场景中,您有一个测试套件,并且您希望识别该套件中已标记有自定义字段“can_be_automated = true”的特定测试用例 一旦您确定了这些特定的测试用例,问题的第二部分涉及将它们添加到现有的测试运行中。
对于第一部分,要从测试套件中过滤和检索特定测试用例,您可以使用“get_cases”API 端点。相应的 API 查询将显示如下:
GET index.php?/api/v2/get_cases/{project_id}&suite_id={suite_id}
执行此查询后,您收到的响应将是 JSON 格式。在此 JSON 响应中,您可以找到名为“custom_can_be_automated”的自定义字段。
"cases":[
{
"id":22478,
"title":"Test Case Steps (Text)",
"section_id":2347,
"template_id":1,
"type_id":5,
"priority_id":4,
"milestone_id":null,
"refs":null,
"created_by":36,
"created_on":1691415817,
"updated_by":36,
"updated_on":1692281184,
"estimate":null,
"estimate_forecast":null,
"suite_id":196,
"display_order":4,
"is_deleted":0,
"case_assignedto_id":null,
"custom_automation_type":6,
"custom_can_be_automated":true,
"custom_preconds":"Test Case Step *TEXT* Precondition",
"custom_steps":"%Var3 \r\n%Var4\r\n",
"custom_testrail_bdd_scenario":"",
"custom_expected":" ![](index.php?\/attachments\/get\/d8d1d9e0-fe4c-43c8-b894-dfd83d9c160c) ",
"custom_steps_separated":null,
"custom_mission":null,
"custom_goals":null,
"comments":[
]
},
{
"id":22494,
"title":"Automated Checkout",
"section_id":2347,
"template_id":9,
"type_id":3,
"priority_id":3,
"milestone_id":null,
"refs":null,
"created_by":36,
"created_on":1691679382,
"updated_by":32,
"updated_on":1694640912,
"estimate":null,
"estimate_forecast":null,
"suite_id":196,
"display_order":5,
"is_deleted":0,
"case_assignedto_id":null,
"custom_automation_type":0,
"custom_can_be_automated":false,
"custom_preconds":null,
"custom_steps":null,
"custom_testrail_bdd_scenario":"",
"custom_expected":null,
"custom_steps_separated":null,
"custom_mission":null,
"custom_goals":null,
"comments":[
]
},
根据提供的响应,您可以使用过滤器根据“custom_can_be_automated”属性提取案例 ID。为了举例说明 API 调用,我将使用众所周知的“curl”实用程序;然后您可以使它们适应您的 Javascript 环境,您可以在其中使用特定的库来执行 HTTP 请求。您可以通过使用以下curl 和 jq 命令来实现此目的。
curl -H "Content-Type: application/json" -u "$TESTRAIL_EMAIL:$TESTRAIL_PASS" "$TESTRAIL_URL/index.php?/api/v2/get_cases/{project_id}&suite_id={suite_id}" | jq '[.[] | select(.custom_can_be_automated == true)]'
此curl命令将根据“custom_can_be_automated”属性获取相关案例。
获取所有这些案例 ID 后,您可以继续使用“update_run”端点将它们添加到测试运行中。此操作的请求如下:
POST index.php?/api/v2/update_run/{run_id}
请求正文的结构应如下所示: { "include_all": true, "case_ids": [1, 2, 3, 5, 8] }
使用“curl”实用程序的 POST 请求如下所示:
curl -X POST "https://$TESTRAIL_URL/index.php?/api/v2/update_run/{run_id}"
-H "Content-Type: application/json"
-u "$TESTRAIL_EMAIL:$TESTRAIL_PASS"
-d '{"include_all": true, "case_ids": [1, 2, 3, 5, 8]}'
成功添加案例后,您将收到响应代码 200 以确认操作成功。
指向端点的链接
https://support.testrail.com/hc/en-us/articles/7077874763156-Runs#updaterun https://support.testrail.com/hc/en-us/articles/7077292642580-Cases#getcases