如何合并两次Karate测试运行的报告,避免覆盖丢失数据?
可行,以下是几种落地的解决方案:
方案1:为每次运行生成独立JSON报告后合并
- 给两次测试的JSON报告指定不同的文件名,避免互相覆盖。如果你的Runner支持自定义JSON文件名配置,直接在代码里指定即可;如果不支持,也可以通过修改报告目录的文件命名规则,让每次运行生成带测试标识或时间戳的唯一JSON文件。
- 代码示例调整:
@Test fun run1() { val reportDir = "build/report-dir" val results: Results = Runner .path("features-dir-1") .debugMode(true) .outputCucumberJson(true) .reportDir(reportDir) .jsonReportFileName("cucumber-run1.json") // 自定义唯一文件名 .... .parallel(1) } @Test fun run2() { val reportDir = "build/report-dir" val results: Results = Runner .path("features-dir-2") .debugMode(true) .outputCucumberJson(true) .reportDir(reportDir) .jsonReportFileName("cucumber-run2.json") // 与run1区分开 .... .parallel(1) } - 所有测试跑完后,用Cucumber的报告合并工具(比如
cucumber-reporting的合并功能,或者自己写简单脚本)把多个JSON文件合并成一个,再生成包含所有结果的统一HTML报告。
方案2:用一个Runner执行所有Feature目录
- 不用拆分两个独立的
Runner调用,直接在一个测试方法里把两个Feature目录都传给path()方法(只要你的Runner支持多路径传入),这样Runner会一次性执行所有Feature,自然生成包含全部结果的统一报告。 - 代码示例调整:
@Test fun runAllTests() { val reportDir = "build/report-dir" val results: Results = Runner .path("features-dir-1", "features-dir-2") // 传入多个Feature目录 .debugMode(true) .outputCucumberJson(true) .reportDir(reportDir) .... .parallel(1) }
方案3:为每次运行创建独立报告子目录
- 给两次测试分别指定不同的报告子目录,比如带测试名称的子目录,这样两次的报告文件会存在不同路径下,不会被覆盖。之后可以用报告工具把不同目录下的结果合并展示。
- 代码示例调整:
@Test fun run1() { val reportDir = "build/report-dir/run1" val results: Results = Runner .path("features-dir-1") .debugMode(true) .outputCucumberJson(true) .reportDir(reportDir) .... .parallel(1) } @Test fun run2() { val reportDir = "build/report-dir/run2" val results: Results = Runner .path("features-dir-2") .debugMode(true) .outputCucumberJson(true) .reportDir(reportDir) .... .parallel(1) }
内容的提问来源于stack exchange,提问作者Serob
相关产品推荐
相关产品推荐

