如何从 Testrail 套件中过滤特定的测试用例并将其添加到 testrun 中

问题描述 投票:0回答:1

我正在实现脚本来整合 Testcomplete 和 Testrail 以更新结果。我已成功创建 Testrun,并且可以通过提供 caseId 将特定测试用例添加到 testrun。我为此使用了 Testrail API。

问:现在我只想将特定的测试用例添加到 testrun 中,在 testrail 套件中标记为“can_be_automated = yes”,我坚持在这部分。为此实现了一些脚本,但它没有占用特定的测试用例。过滤“can_be_automated = yes”不起作用。使用 JavaScript

有人可以帮我吗?如果有人有脚本,请分享它会很有帮助

提前致谢

javascript filter automation testcomplete testrail
1个回答
0
投票

根据问题的描述,可以将其分为两个不同的任务:

在您的场景中,您有一个测试套件,并且您希望识别该套件中已标记有自定义字段“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

© www.soinside.com 2019 - 2024. All rights reserved.