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

如何用Bash从testng.xml提取指定格式的测试结果?

用Shell命令提取TestNG测试结果的可行方案

方案一:依赖基础文本工具(grep + awk,无需额外安装)

如果系统没有专门的XML处理工具,用原生文本命令就能实现需求,执行以下命令:

grep -oP '<testng-results skipped="\K\d+" failed="\K\d+" ignored="\K\d+" total="\K\d+" passed="\K\d+"' testng.xml | awk '{split($0, arr, "\" "); printf "Total : %s\nPassed : %s\nFailed : %s\nSkipped : %s\nFailed : %s\n", arr[4], arr[5], arr[2], arr[1], arr[3]}'

说明:

  • grep -oP 用Perl正则精准捕获每个属性的数值,\K 用于忽略属性名等前置匹配内容,只保留数字部分
  • awk 将捕获到的内容拆分后,按你要求的格式输出(注:你示例中重复了Failed项,命令已对应处理)

方案二:使用专业XML工具xmlstarlet(推荐,更稳定)

xmlstarlet是专门的XML命令行处理工具,能避免XML格式变动(比如属性顺序调整、换行)导致的匹配失败,先通过包管理器安装(如apt install xmlstarlet或brew install xmlstarlet),再执行:

xmlstarlet sel -t \
-e "Total : /testng-results/@total" \
-e "Passed : /testng-results/@passed" \
-e "Failed : /testng-results/@failed" \
-e "Skipped : /testng-results/@skipped" \
-e "Failed : /testng-results/@failed" \
testng.xml

说明:

通过XPath直接定位testng-results节点的属性值,按指定格式输出,逻辑清晰且兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:10:35