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

Jenkins Core无TestNG插件时,如何将测试结果发布至邮件?

Jenkins Core中读取XML测试结果并展示到邮件正文的可行方案

能否将XML转为JSON后读取?

完全可以。你可以借助脚本语言的工具库将XML转换为JSON结构,再用JSON解析逻辑提取统计数据。比如用Python的xmltodict库(需在Jenkins节点提前安装),示例代码如下:

import xmltodict

with open('test-results.xml', 'r') as f:
    xml_content = f.read()

# 将XML转为类JSON的字典结构
json_like_data = xmltodict.parse(xml_content)
# 根据你的XML实际结构定位统计字段,示例假设数据在testsuite标签下
test_stats = json_like_data['testsuite']
total = test_stats['@tests']
passed = test_stats['@passed']
failed = test_stats['@failed']

print(f"总执行测试数={total},总通过测试数={passed},总失败测试数={failed}")

执行该脚本后,捕获输出内容即可插入邮件正文。

其他可行方案

1. 命令行工具组合提取(无需额外解析库)

如果XML结构固定,统计数据以属性形式存在(比如<testsuite tests="23" passed="20" failed="3">),可以用grep+awk直接提取数值,示例命令:

# 提取总测试数
total=$(grep -o 'tests="[^"]*"' test-results.xml | awk -F'"' '{print $2}')
# 提取通过数
passed=$(grep -o 'passed="[^"]*"' test-results.xml | awk -F'"' '{print $2}')
# 提取失败数
failed=$(grep -o 'failed="[^"]*"' test-results.xml | awk -F'"' '{print $2}')
# 生成邮件内容
echo "总执行测试数=$total,总通过测试数=$passed,总失败测试数=$failed"

将这些命令加入Jenkins构建步骤,把输出结果作为邮件正文内容即可。

2. 脚本语言原生处理XML

利用Python/Shell等脚本的标准XML处理能力,无需额外插件。比如Python的xml.etree.ElementTree是标准库,无需安装,示例代码:

import xml.etree.ElementTree as ET

tree = ET.parse('test-results.xml')
root = tree.getroot()

# 根据XML实际结构调整标签和属性名
total = root.attrib.get('tests', '0')
passed = root.attrib.get('passed', '0')
failed = root.attrib.get('failed', '0')

print(f"总执行测试数={total},总通过测试数={passed},总失败测试数={failed}")

3. Jenkins Pipeline内置正则提取

如果使用Jenkins Pipeline,可以直接读取XML文件内容,用正则表达式匹配提取数值,示例Pipeline片段:

stage('提取测试统计数据') {
  steps {
    script {
      def xmlContent = readFile(file: 'test-results.xml')
      // 正则匹配属性值,根据XML结构调整正则表达式
      def totalMatch = (xmlContent =~ /tests="(\d+)"/)
      def passedMatch = (xmlContent =~ /passed="(\d+)"/)
      def failedMatch = (xmlContent =~ /failed="(\d+)"/)
      
      env.TEST_SUMMARY = "总执行测试数=${totalMatch[0][1]},总通过测试数=${passedMatch[0][1]},总失败测试数=${failedMatch[0][1]}"
    }
  }
}

stage('发送测试结果邮件') {
  steps {
    mail to: '收件人邮箱',
         subject: '自动化测试结果汇总',
         body: "${env.TEST_SUMMARY}"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:16:30