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
相关产品推荐
相关产品推荐

