karate - 在空手道中,创建的 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
让我知道是否需要更多详细信息。
解决方案
很可能是一个错误。大多数团队使用 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
推荐阅读
- javascript - 使用 GET 请求和标头从颤振桌面打开浏览器的解决方法
- c# - 为什么在数据模板中使用 xaml UserControl 时无法绑定到依赖属性?
- javascript - fileList[0] 缺少属性
- javascript - Vue,相同组件的多个实例以某种奇怪的方式处理事件
- html - valueChanges 输入显示但不保存
- session - 在基于动态子域的 Laravel 8app 上获取数据库错误
- scala - Scala 3 - 从 List[String] 实例化类
- laravel - alpine js下拉菜单在livewire组件内没有正确重新渲染
- c++ - LVN_GETDISPINFO 接收者——列表控件的父级是否必须为它?
- ruby - 如何在容器中的黄瓜命令后打开 Chrome 浏览器的本地实例?