首页 > 解决方案 > 在空手道中,创建的 surefire XML 报告在执行的下一个测试中一个接一个地为所有示例附加和合并测试步骤

问题描述

我正在运行以下场景示例:

Scenario Outline: Basic test for user <userID>
When url 'xyz'
And path 'abc/efg'
And params id = <userID>
When method get
Then status 200

Example:
|userID|
|1|
|2|
|3|
|4|

注意:我正在将示例中的用户 ID 传递场景名称和参数,现在执行此操作后,在surefire 中为上述测试生成的 xml 报告看起来像这样:

<testSuite failures="0"
name="xyz.feature"
tests="4"
time="8.5">
<testcase classname="xyz"
name="Basic test for user 1"
time="1.20"
<system-out>
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '1'...............passed
When method get...................passed
Then status 200...................passed
</system-out>
</testcase>

<testcase classname="xyz"
name="Basic test for user 2"
time="2.10"
<system-out>
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '1'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '2'...............passed
When method get...................passed
Then status 200...................passed
</system-out>
</testcase>

<testcase classname="xyz"
name="Basic test for user 3"
time="3.21"
<system-out>
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '1'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '2'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '3'...............passed
When method get...................passed
Then status 200...................passed
</system-out>
</testcase>

<testcase classname="xyz"
name="Basic test for user 4"
time="3.56"
<system-out>
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '1'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '2'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '3'...............passed
When method get...................passed
Then status 200...................passed
When url 'xyz' ...................passed
And path 'abc/efg'................passed
And params id = '4'...............passed
When method get...................passed
Then status 200...................passed
</system-out>
</testcase>

请查看用户 id 为 1 的第一个测试用例如何打印 4 个步骤,这是正确的。现在对于第二个测试用例,第一个测试用例的步骤被附加到第二个测试用例的步骤中。对于 testcase1 和 testcase2 的第 3 个测试用例步骤,将与 testcase3 步骤一起显示。这会在 CI 管道中产生问题。理想情况下,在 xml 报告中,所有 tescase 应该只有 4 个步骤,但事实并非如此。

想在这里检查可能是什么问题。我正在使用并行运行器: https ://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/DemoTestParallel.java

Logback 文件为:https ://github.com/intuit/karate/blob/master/examples/jobserver/src/test/java/logback-test.xml

让我知道是否需要更多详细信息。

标签: karate

解决方案


很可能是一个错误。大多数团队使用 Cucumber JSON 输出来生成 HTML 报告。同样从 0.9.6 开始,Karate 具有内置的 HTML 报告:https ://twitter.com/KarateDSL/status/1237797240686522369

请按照这些说明提交问题,保持简单:https ://github.com/intuit/karate/wiki/How-to-Submit-an-Issue


推荐阅读