如何运行两个带不同参数的Karate实例并分别保存各次运行报告?
Karate 多实例并行生成独立报告解决方案
默认情况下Karate所有运行实例都会往同一个默认报告目录写入内容,多个并行实例同时写同目录时,先运行的实例报告内容会被后运行的覆盖,你可以通过修改报告配置的方式实现多份报告独立存储,具体操作方法如下:
方案1:启动时指定独立输出目录(最稳妥)
直接给每个运行实例指定专属的报告输出路径,从根源上避免文件覆盖问题:
- 如果你使用Karate独立jar包运行:
两个实例分别添加--output(简写为-o)参数指定不同目录即可,示例命令:
终端1运行:java -jar karate.jar -o target/reports/sceneA -Dscene=pay 测试用例路径
终端2运行:java -jar karate.jar -o target/reports/sceneB -Dscene=refund 测试用例路径 - 如果你通过Java/JUnit代码调用Karate运行:
在Runner配置中添加outputDirectory属性指定目录即可,示例代码:
另一个实例修改// 实例1配置 Runner.path("classpath:testcases") .systemProperty("scene", "pay") .outputDirectory("target/reports/sceneA") .parallel(5);outputDirectory对应的路径即可。
方案2:配置报告文件名前缀(配合目录使用更稳妥)
如果你需要在报告文件名上直接区分不同运行实例,可以在karate-config.js中添加报告前缀配置:
// 假设你通过入参区分不同运行场景,直接用场景参数作为报告前缀 karate.configure('report', { name: { prefix: karate.get('scene') + '-' } });
注意:不建议只修改报告文件名前缀不修改输出目录,Karate报告依赖的公共静态资源(css、js文件)没有前缀配置,仍会出现覆盖问题,导致报告样式加载异常。
内容的提问来源于stack exchange,提问作者durgesh_ak19
相关产品推荐
相关产品推荐

