1

我们正在尝试将特定的测试启动信息发送到 Xray 中的测试执行,但没有成功。测试建立在 Jenkins 之上,与 Xray 的通信是通过 Xray 连接器进行的。我们希望在测试执行的描述和评论中包含测试信息。

任何建议将不胜感激

技术栈:WebdriverIO + Cucumber + SauceLabs + Jira Xray

4

3 回答 3

1

我在 Jira 和 Xray 方面做了一些研究。

在 Xray 服务器中,当使用所谓的“黄瓜多部分”端点时,总是会创建一个新的测试执行问题。您可以指定一个包含“字段”JSON 对象的 JSON 内容,您可以在其中设置您在测试执行中拥有的一些自定义字段的值(例如“摘要”或其他)。下面,您可能会找到辅助 JSON 对象的示例(存储在文件中,例如 createTestExec_with_description.json)。您可以定义描述字段并在其中嵌入链接。这遵循 Jira 的“简单更新”语法,如此处所述

但是,您不能在创建问题时添加评论(这是您调用 Jira 问题创建时 Jira REST API 的“限制”/决定)。

{
"fields": {
    "project": {
        "key": "BOOK"
    },
    "summary": "Results for cucumber execution",
    "description": "For more info please check [here|https://www.example.com]",
    "issuetype": {
        "id": "9"
    },
    "customfield_11805" : [
        "iOS"
    ],
"fixVersions" :
    [
     {
        "name": "1.0"
     }
    ]
}
}

然后您可以使用以下内容提交您的黄瓜 JSON 报告以及此辅助文件:

curl -u $USERNAME:$PASSWORD -F info=@createTestExec_with_description.json -F result=@data.json $JIRA_BASE_URL/rest/raven/1.0/import/execution/cucumber/multipart

如果您在 Jira Cloud 上使用 Xray,Xray 的 API 允许指定现有的测试执行问题以更新/覆盖。我没有检查您是否可以混合使用“简单”和“动词/操作”更新,因为 Atlassian 在文档中引用它们(即同时使用“字段”对象和“更新”对象) . 如果这是可能的,你可能会做类似的事情:

{
"fields": {
    "project": {
        "key": "BOOK"
    },
    "summary": "Results for cucumber execution",
    "description": "For more info please check [here|https://www.example.com]",
    "issuetype": {
        "id": "9"
    },
    "customfield_11805" : [
        "iOS"
    ],
"fixVersions" :
    [
     {
        "name": "1.0"
     }
    ]
},

"update": {
  "comment": [
     {
        "add": {
           "body": "latest results [here|https://www.example.com]"
        }
     }
   ]
}
}

前面的示例有一些字段可以安全删除,具体取决于您的需要。您还将使它们适应您的 Jira 配置/环境。

于 2021-02-23T15:18:42.267 回答
0

@Sergio 在我的情况下它不起作用。我创建了两个 JSON 文件,“one.json”,它通过使用 jq 命令添加所有 JSON 测试结果来组合,第二个文件,称为“extra.json”,其中包含您显示的 JSON 结构。在 extra.json 中,键与票号(取自 one.json)和取自 Jira API /rest/api/2/issue/ABC-194/editmeta 的自定义字段名称相关。像这样使用带有 URL 的分段上传

curl -k -H "Content-Type: application/json" -X POST -u login:password -F info=@extra.json -F result=@one.json https://jira/rest/raven/1.0/导入/执行/黄瓜

Jira 接受了这两个 JSON 文件,但在 Jira 上,什么都没有发生,没有变化,没有添加文本。下一步,我将这两个文件合并为一个更大的 JSON 文件,并使用正常上传(使用 Jira API,但不是多部分),结果相同,Jira 接受了 JSON,但 Jira 使用 Web 界面显示没有任何新内容。来 json,改变密钥 - 没有什么能给我任何小的改变。

额外的.json:

{
"fields": {
    "project": {
        "key": "@ABC-9"
    },
    "summary": "Results for cucumber execution",
    "description": "For more info please check [here|https://www.example.com]",
    "issuetype": {
        "id": "9"
    },
    "customfield_16134" : [
        "link"
    ],
"fixVersions" :
    [
     {
        "name": "1.0"
     }
    ]
}
}
Jira's definition gathered using api:
"customfield_16134": {
  "required": false,
  "schema": {
    "type": "string",
    "custom": "com.atlassian.jira.plugin.system.customfieldtypes:textfield",
    "customId": 16134
  },
  "name": "Revision",
  "operations": [
    "set"
  ]
},
于 2021-02-26T07:15:06.323 回答
0

就我而言,任务是通过 API 更新测试运行状态。我做了接下来的步骤:

  1. 检索测试执行中的测试运行信息

curl -H "Content-Type: application/json" -X GET -u <jira_user_username>: https://<JIRA_PORTAL>/jira/rest/raven/1.0/api/testexec/<TEST_EXECUTION_ISSUE-KEY>/test

样本响应

[
     {
        "id": 10444291,
        "status": "TODO",
        "key": "<TEST_RUN_ISSUE_KEY>",
        "rank": 1
      }
]
  1. 使用上述测试运行 ID 更新测试运行

curl -H "Content-Type: application/json" -X PUT -u <jira_user_username>: https://<JIRA_PORTAL>/jira/rest/raven/1.0/api/testrun/10368224/status?status=PASS

响应:200 状态码。

XRay API 参考: https ://docs.getxray.app/display/XRAY/REST+API

于 2021-12-14T21:51:56.610 回答