Jenkins 测试结果分析器显示持续时间错误

Jenkins test results analyzer is presenting duration wrong

我是 运行 Jenkins 的工作,它是 运行 一些新人测试,并且正在生成一个看起来像这样的 junit 测试结果文件:

<?xml version="1.0" encoding="UTF-8"?> <testsuites name="Basic Regression All"> <testsuite name="Login" id="02d5167b-ce9c-4ba4-9b24-e0a5c142768f" tests="2" time="628"> <testcase name="Successful Login"/> <testcase name="Auth Token is not null"/> </testsuite> <testsuite name="Account Summary" id="18773a24-2e3a-4c7d-99c3-921c4e41541b" tests="1" time="290"> <testcase name="Successfully Retreived Accounts"/> </testsuite> <testsuite name="Account Balances" id="d0817e78-8a25-4bc2-9301-3b4ef954600a" tests="1" time="337"> <testcase name="Successfully Retreived Balances"/> </testsuite> 出于某种原因,时间字段被“测试结果分析器”插件读取为秒而不是毫秒,如所附图片所示。 关于这里发生的事情的任何线索都会有所帮助。 此外,我使用的是 "test results analyzer" 和 junit 的最新版本,所以如果有人知道更好的 Jenkins 插件可以使用,请分享

好的,从我读到的内容来看,罪魁祸首似乎是 Newman(Postman CMD 工具)而不是测试结果分析器。在这里查看此页面:

https://www.ibm.com/support/knowledgecenter/en/SSQ2R2_9.5.0/com.ibm.rsar.analysis.codereview.cobol.doc/topics/cac_useresults_junit.html?_sm_au_=iVV1H1fVNH2HFqZH

Junit 格式似乎以秒而不是毫秒为单位具有 "time" 属性。 IE。 Newman 生成: time="337"(如上所示),其中 Test Analyzer 期望 time="0.337"

因此添加了另一个构建阶段 (Jenkins),它运行这个小 python 脚本,将 "time" 属性从毫秒转换为秒。

import os
import xml.etree.ElementTree as etree

#print os.getcwd()
os.chdir('path_to/tests')

collection = os.environ['Collection']
e = etree.parse(collection + '_results.xml').getroot()

for atype in e.findall('testsuite'):
    duration=int((atype.get('time')))
    atype.set('time',str(duration/float(1000)))

f = open('fixed.xml','w')
print >> f, etree.tostring(e)

然后修复了它

更新:

实际上,我在服务器上的 Newman 运行 上的版本已过时....将 newman 升级到最新版本 (3.5.2) 可解决该问题.... 嗯嗯....