来自 wdio cucumber json 记者的 Jira Xray 中的错误测试结果

Wrong tests results in Jira Xray from wdio cucumber json reporter

我们有一个链接到 Cucumber 测试的故事,我们在测试执行中执行此测试。测试执行中的功能文件如下所示:

@ABC-164
@ABC-163
Feature: Homepage test
    @ABC-162
    Scenario: Homepage test
        Feature: Go to homepage
            Scenario: Homepage
                Given I open the url "https://example.com/"
                Then I expect that the url is "https://google.com"

第一个总是通过,第二个不通过。 我们正在生成来自 wdio cucumber json 报告者的 JSON 报告,您可以在下面看到:

[
  {
    "keyword": "Feature",
    "type": "feature",
    "description": "",
    "line": 3,
    "name": "Homepage test",
    "uri": "Can not be determined",
    "tags": [
      {
        "type": "Tag",
        "location": { "line": 1, "column": 1 },
        "name": "@ABC-164"
      },
      {
        "type": "Tag",
        "location": { "line": 2, "column": 1 },
        "name": "@ABC-163"
      }
    ],
    "elements": [
      {
        "keyword": "Scenario",
        "type": "scenario",
        "description": "\t\tFeature: Go to homepage",
        "name": "Homepage test",
        "tags": [
          { "name": "@ABC-164", "location": { "line": 1, "column": 1 } },
          { "name": "@ABC-163", "location": { "line": 2, "column": 1 } },
          { "name": "@ABC-162", "location": { "line": 6, "column": 2 } }
        ],
        "id": "homepage-test;homepage-test",
        "steps": [
          {
            "arguments": [],
            "keyword": "Before",
            "name": "Hook",
            "result": { "status": "passed", "duration": 2000000 },
            "line": "",
            "match": { "location": "can not be determined with webdriver.io" }
          },
          {
            "arguments": [],
            "keyword": "Before",
            "name": "Hook",
            "result": { "status": "passed", "duration": 0 },
            "line": "",
            "match": { "location": "can not be determined with webdriver.io" }
          }
        ]
      },
      {
        "keyword": "Scenario",
        "type": "scenario",
        "description": "",
        "name": "Homepage",
        "tags": [
          { "name": "@ABC-164", "location": { "line": 1, "column": 1 } },
          { "name": "@ABC-163", "location": { "line": 2, "column": 1 } }
        ],
        "id": "homepage-test;homepage",
        "steps": [
          {
            "arguments": [],
            "keyword": "Before",
            "name": "Hook",
            "result": { "status": "passed", "duration": 0 },
            "line": "",
            "match": { "location": "can not be determined with webdriver.io" }
          },
          {
            "arguments": [],
            "keyword": "Given",
            "name": "I open the url \"https://example.com/\"",
            "result": { "status": "passed", "duration": 587000000 },
            "line": 12,
            "match": { "location": "can not be determined with webdriver.io" }
          },
          {
            "arguments": [],
            "keyword": "Then",
            "name": "I expect that the url is \"https://google.com\"",
            "result": {
              "status": "failed",
              "duration": 11000000,
              "error_message": "Error: expect(received).toEqual(expected)"
            },
            "line": 13,
            "match": { "location": "can not be determined with webdriver.io" }
          },
          {
            "arguments": [],
            "keyword": "After",
            "name": "Hook",
            "result": { "status": "passed", "duration": 0 },
            "line": "",
            "match": { "location": "can not be determined with webdriver.io" }
          }
        ]
      }
    ],
    "id": "homepage-test",
    "metadata": {
      "browser": { "name": "chrome", "version": "88.0.4324.150" },
      "device": "Device name not known",
      "platform": { "name": "osx", "version": "Version not known" }
    }
  }
]

Xray 仅从第一个对象的 Before Hooks 中读取状态,完全忽略其余状态。

当我们使用 Jenkins 插件以及通过 curl 直接发送时会出现问题:curl -k -H "Content-Type: application/json" -X POST -u login:pass --data @result.json https://jira/rest/...

如有任何帮助,我们将不胜感激。

场景下不能有功能。这是一个语法错误,尽管 Cucumber 可能无法正确报告它。

正如 Aslak 在评论中提到的,.feature 文件语法不正确。 一个合适的 .feature 文件就像前面的例子一样。 还请记住,您拥有的标签 (@ABC-xxx) 可能需要一些前缀,例如 REQ 或 TEST,具体取决于您的 settings.

顺便说一句,不清楚您是否从 Xray 导出测试执行以生成 .feature 文件,但我认为情况并非如此。只是为了强调,为了根据现有测试(Cucumber Scenario/Scenario 大纲)报告结果,它们必须事先存在于 Xray 中。

@ABC-164
@ABC-163
Feature: Homepage test
    @ABC-162
    Scenario: Homepage
      Given I open the url "https://example.com/"
      Then I expect that the url is "https://google.com"*

对于那些会遇到同样问题的人。 我们设法找到了解决方案。非常感谢您的回答!

看起来我们在 Jira 中有一个旧的特征文件结构(那时候我们没有故事和先决条件)。当我们开始正确使用它时:将故事链接到测试并添加前提条件,然后 Xray 会创建双倍的场景部分。所以我们从 Cucumber Tests 中删除了多余的部分,创建了适当的前提条件,现在特征文件就这样正确地创建了:

@ABC-169
@ABC-131
Feature: Main feature title

    Background:
        #@ABC-166
        Given I open the url "https://example.com/"
        Then I expect that the url is "https://google.com"

    @ABC-132 @ABC-168 @ABC-141
    Scenario: Main scenario
        Given Lorem ipsum
        Then Et sit amet