将多个 json 结果合并为一个更新的 Cucumber-JVM 报告
Combine Multiple json results in one, updated Cucumber-JVM Report
我的自动化项目中有两个 运行ners 如下:
Main 运行ner - 执行所有 @ui-test
标记的测试用例,如果场景失败 target/rerun.txt
将填充场景位置(例如 features/Dummy.feature:22
):
@RunWith(Cucumber.class)
@CucumberOptions(
features = "classpath:features",
plugin = {"pretty", "html:target/cucumber-html-report", "json:target/cucumber.json", "rerun:target/rerun.txt"},
tags = {"@ui-test", "~@ignore"}
)
public class RunCukesTest {
}
Secondary 运行ner - 重新执行来自 target/rerun.txt
:
的场景
@RunWith(Cucumber.class)
@CucumberOptions(
features = "@target/rerun.txt",
plugin = {"pretty", "html:target/cucumber-html-report-rerun", "json:target/cucumber_rerun.json"}
)
public class ReRunFailedCukesTest {
}
执行时会创建两个结果 json 文件:
cucumber.json
cucumber_rerun.json
Jenkins 将通过 Cucumber-JVM Reports
插件收集结果并创建一个合并报告。
问题是,即使在第二个 运行 中通过了所有 target/rerun.txt
测试,由于 cucumber.json
,报告状态仍将保持失败。
有没有办法(设置 Cucumber-JVM Reports
插件或修改上面显示的 运行 用户)用 cucumber_rerun.json
的结果覆盖 cucumber.json
并发布只有修改后的 cucumber.json
?
另一个子关键字:maven
、java
、cucumber-java8
、cucumber-junit
、junit
不过,我遇到了与您类似的问题,我使用了单运行程序,直接处理了 testNG 的重新运行(重新运行是我从 JUnit 切换到 TestNG 的原因之一),结果是我的 json 报告中增加了测试量。
我的解决方案是之后清理 json 文件,尽管 Jenkins 知道失败的测试,但它不会将构建标记为失败或不稳定。
在您的特定情况下,您可能会尝试以某种方式匹配来自 rerun.json 的测试并将它们从常规 json 报告中排除。
对于解析 jsons 我可能会推荐使用 Jackson FasterXML
我在 Jenkins 中使用具有以下配置的 Jenkins cucumber reporting
最新版本。
Image Of Config In Jenkins
第一名
@RunWith(Cucumber.class)
@CucumberOptions(
features="FolderFeature",
glue={"Gluefolder"},
plugin={"html:target/cucumberpf-html-report",
"json:target/cucumberpf.json"}
)
public class RunPF {
}
第二名
@RunWith(Cucumber.class)
@CucumberOptions(
features="Blah/Test.feature",
glue={"mygluefolder"},
plugin={"html:target/cucumber-html-report",
"json:target/cucumber.json"}
)
public class RunRA {
}
我在两个 .json
文件中都失败了,当它通过时,两个文件都在一个 cucumber
报告中正确合并和更新。
这里是错误:
[CucumberReport] Preparing Cucumber Reports
[CucumberReport] JSON report directory is "C:\Users\ajacobs\workspace\com.mytest.framework\target\"
[CucumberReport] Copied 2 json files from workspace "C:\Users\admin\workspace\yourtest\target" to
reports directory "C:\Users\admin\.jenkins\jobs\Regression\builds\cucumber-html-reports\.cache"
[CucumberReport] Processing 2 json files:
[CucumberReport] C:\Users\admin\yourtest\builds\cucumber-html-reports\.cache\cucumber.json
[CucumberReport] C:\Users\admin\yourtest\builds\cucumber-html-reports\.cache\cucumberpf.json
Finished: SUCCESS
我的自动化项目中有两个 运行ners 如下:
Main 运行ner - 执行所有
@ui-test
标记的测试用例,如果场景失败target/rerun.txt
将填充场景位置(例如features/Dummy.feature:22
):@RunWith(Cucumber.class) @CucumberOptions( features = "classpath:features", plugin = {"pretty", "html:target/cucumber-html-report", "json:target/cucumber.json", "rerun:target/rerun.txt"}, tags = {"@ui-test", "~@ignore"} ) public class RunCukesTest { }
Secondary 运行ner - 重新执行来自
的场景target/rerun.txt
:@RunWith(Cucumber.class) @CucumberOptions( features = "@target/rerun.txt", plugin = {"pretty", "html:target/cucumber-html-report-rerun", "json:target/cucumber_rerun.json"} ) public class ReRunFailedCukesTest { }
执行时会创建两个结果 json 文件:
cucumber.json
cucumber_rerun.json
Jenkins 将通过 Cucumber-JVM Reports
插件收集结果并创建一个合并报告。
问题是,即使在第二个 运行 中通过了所有 target/rerun.txt
测试,由于 cucumber.json
,报告状态仍将保持失败。
有没有办法(设置 Cucumber-JVM Reports
插件或修改上面显示的 运行 用户)用 cucumber_rerun.json
的结果覆盖 cucumber.json
并发布只有修改后的 cucumber.json
?
另一个子关键字:maven
、java
、cucumber-java8
、cucumber-junit
、junit
不过,我遇到了与您类似的问题,我使用了单运行程序,直接处理了 testNG 的重新运行(重新运行是我从 JUnit 切换到 TestNG 的原因之一),结果是我的 json 报告中增加了测试量。 我的解决方案是之后清理 json 文件,尽管 Jenkins 知道失败的测试,但它不会将构建标记为失败或不稳定。 在您的特定情况下,您可能会尝试以某种方式匹配来自 rerun.json 的测试并将它们从常规 json 报告中排除。 对于解析 jsons 我可能会推荐使用 Jackson FasterXML
我在 Jenkins 中使用具有以下配置的 Jenkins cucumber reporting
最新版本。
Image Of Config In Jenkins
第一名
@RunWith(Cucumber.class)
@CucumberOptions(
features="FolderFeature",
glue={"Gluefolder"},
plugin={"html:target/cucumberpf-html-report",
"json:target/cucumberpf.json"}
)
public class RunPF {
}
第二名
@RunWith(Cucumber.class)
@CucumberOptions(
features="Blah/Test.feature",
glue={"mygluefolder"},
plugin={"html:target/cucumber-html-report",
"json:target/cucumber.json"}
)
public class RunRA {
}
我在两个 .json
文件中都失败了,当它通过时,两个文件都在一个 cucumber
报告中正确合并和更新。
这里是错误:
[CucumberReport] Preparing Cucumber Reports
[CucumberReport] JSON report directory is "C:\Users\ajacobs\workspace\com.mytest.framework\target\"
[CucumberReport] Copied 2 json files from workspace "C:\Users\admin\workspace\yourtest\target" to
reports directory "C:\Users\admin\.jenkins\jobs\Regression\builds\cucumber-html-reports\.cache"
[CucumberReport] Processing 2 json files:
[CucumberReport] C:\Users\admin\yourtest\builds\cucumber-html-reports\.cache\cucumber.json
[CucumberReport] C:\Users\admin\yourtest\builds\cucumber-html-reports\.cache\cucumberpf.json
Finished: SUCCESS