如何生成合并Karate-DSL各Feature执行结果的统一文件?
合并Karate-DSL多Feature测试结果为统一文件
Karate默认会为每个Feature生成单独的JSON测试结果文件,要合并成统一文件,可通过以下几种方式实现:
1. 利用Karate内置聚合功能
运行测试时指定输出目录并开启聚合配置,Karate会自动生成汇总的JSON/HTML报告:
- 命令行运行时添加参数:
mvn test -Dkarate.output.dir=target/karate-results -Dkarate.aggregate=true
执行完成后,target/karate-results目录下会生成karate-summary.json(汇总结果)和karate-summary.html(可视化报告)。
2. 自定义脚本合并JSON结果
如果需要更灵活的合并逻辑,可编写脚本遍历结果目录,读取所有单独的JSON文件并合并:
以下是Groovy示例脚本(需确保环境有Groovy和Jackson依赖):
@Grab('com.fasterxml.jackson.core:jackson-databind:2.15.2') import com.fasterxml.jackson.databind.ObjectMapper // 结果文件所在目录 def resultsDir = new File('target/karate-results') def mapper = new ObjectMapper() def combinedResults = [] // 遍历所有result开头的JSON文件 resultsDir.eachFileMatch(~/result-.+\.json/) { file -> def featureResult = mapper.readValue(file, Map) combinedResults.add(featureResult) } // 写入合并后的JSON文件 mapper.writerWithDefaultPrettyPrinter() .writeValue(new File('target/combined-karate-results.json'), combinedResults)
将脚本保存为merge-results.groovy,运行groovy merge-results.groovy即可生成合并后的文件。
3. Maven/Gradle插件配置
通过构建插件直接配置聚合输出:
Maven示例(pom.xml)
<plugin> <groupId>com.intuit.karate</groupId> <artifactId>karate-maven-plugin</artifactId> <version>1.4.1</version> <executions> <execution> <goals> <goal>test</goal> </goals> <configuration> <outputDirectory>target/karate-results</outputDirectory> <reportFormat>json</reportFormat> <aggregate>true</aggregate> </configuration> </execution> </executions> </plugin>
运行mvn karate:test后,目标目录会自动生成汇总的JSON报告。
内容的提问来源于stack exchange,提问作者Jesus Ovalle
相关产品推荐
相关产品推荐

