You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Bash脚本生成的tests数组计算JSON的summary字段值?

用Bash结合jq计算测试JSON的summary字段值

要在Bash中完成JSON里summary字段四个值的计算,最便捷的方式是用jq工具(需提前安装),直接对已生成的含testname和tests数组的JSON进行处理。

核心计算逻辑(基于jq)

假设你的原始JSON文件为test_raw.json,执行以下命令即可生成包含完整summary字段的最终JSON:

jq '
  # 计算临时变量:总测试数、成功数、失败数、总耗时
  .total_tests = (.tests | length)
  | .success_count = ([.tests[] | select(.status == true)] | length)
  | .failed_count = (.total_tests - .success_count)
  | .total_duration = (.tests | map(.duration) | add)
  # 计算rating:成功数/总测试数,自动判断输出整数或浮点数
  | .rating = (.success_count / .total_tests) | if . == floor(.) then . else . end
  # 构建summary字段并清理临时变量
  | .summary = {
      success: .success_count,
      failed: .failed_count,
      rating: .rating,
      duration: .total_duration
    }
  | del(.total_tests, .success_count, .failed_count, .total_duration, .rating)
' test_raw.json > test_final.json

各字段计算说明

  • success:筛选tests数组中status为true的项,统计数量
  • failed:用总测试数减去成功数,避免重复遍历数组提升效率
  • rating:用成功数除以总测试数,通过判断是否等于自身整数部分,自动输出整数(如100%成功输出1)或浮点数(如成功6/10输出0.6)
  • duration:提取所有测试用例的duration值,求和得到总耗时

集成到现有脚本

如果你的Bash脚本是先生成基础JSON,可直接将生成结果管道到上述jq命令,比如:

# 假设你的现有脚本生成基础JSON的命令是generate_base_json
generate_base_json | jq '
  .total_tests = (.tests | length)
  | .success_count = ([.tests[] | select(.status == true)] | length)
  | .failed_count = (.total_tests - .success_count)
  | .total_duration = (.tests | map(.duration) | add)
  | .rating = (.success_count / .total_tests) | if . == floor(.) then . else . end
  | .summary = {success: .success_count, failed: .failed_count, rating: .rating, duration: .total_duration}
  | del(.total_tests, .success_count, .failed_count, .total_duration, .rating)
' > test_final.json

内容的提问来源于stack exchange,提问作者Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:55:20