上一节中我们说了如何用testutils.jar这个包生成我们的结果文件,文件的类型是xml,如下图:
这个xml的结果,我们发给领导,敢问哪个领导看着不目瞪口呆?现在各个网站没有找到andriod的html报告,下面是我自己的方法去解析生成的html报告。
需要:
1.自动化case标题和功能case标题对应的xml文件:如下图
2.autoit v3软件
下面:我们需要用autoit写脚本去解析这两个xml,组合成我们需要的报告.报告如下图:
autoit脚本如下:
这个xml的结果,我们发给领导,敢问哪个领导看着不目瞪口呆?现在各个网站没有找到andriod的html报告,下面是我自己的方法去解析生成的html报告。
需要:
1.自动化case标题和功能case标题对应的xml文件:如下图
2.autoit v3软件
下面:我们需要用autoit写脚本去解析这两个xml,组合成我们需要的报告.报告如下图:
autoit脚本如下:
-
Dim $xmlReportFilePath="TEST-all.xml" ;xml格式的report存放路径 @WorkingDir&"\\"&
-
Dim $xmlConfigFilePath="TEST-config.xml" ;xml格式的用例配置文件存放路径 @WorkingDir&"\\"&
-
Dim $testCaseCount ;测试用例的总数
-
Dim $passCaseCount ;通过的测试用例数
-
Dim $faileCaseCount ;失败的测试用例数
-
Dim $autoTestName ;自动化用例名称
-
Dim $functionTestName ;功能用例名称
-
dim $executeTime ;执行时间
-
Dim $failedMessage ;失败原因
-
Dim $htmlBeginStr
-
Dim $xDoc,$xNodes,$Node
-
Dim $configCaseCount
-
-
-
$htmlBeginStr='<!DOCTYPE html>'& _
-
'<html>'& _
-
'<head>'& _
-
'<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />'& _
-
'<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />'& _
-
'<link rel="stylesheet" type="text/css" href="static/css/index.css" />'& _
-
'<title>xxx QA Test Report</title>'& _
-
'</head>'& _
-
'<body>'& _
-
'<div class="block fixedTop tm bdrb">'& _
-
'<div class="blockuk topBar">'& _
-
'<table class="titleTab tabp100">'& _
-
'<thead>'& _
-
'<td width="20%" class="txtl">'& _
-
'<img src="static/images/homeLogo.png" align="absmiddle"/></td>'& _
-
'<td width="30%" class="txtl" id="testTitle">'& _
-
'xxx QA Test Report</td>'& _
-
'<td width="" class="txtr" id="tips">'
-
;....................................................................................
-
;....函数功能:初始化xml
-
;....参 数: xml路径
-
;....返 回 值:无
-
;....................................................................................
-
Func initXml($xmlPath)
-
$xDoc=ObjCreate("MSXML2.DOMDocument")
-
$xDoc.load($xmlPath)
-
-
EndFunc
-
-
;....................................................................................
-
;....函数功能:得到节点总数
-
;....参 数:
-
;....返 回 值:无
-
;....................................................................................
-
Func getNodeCount($nodeName)
-
$xNodes=$xDoc.documentElement.selectNodes(".//"&$nodeName)
-
$testCaseCount=$xNodes.length
-
EndFunc
-
-
Func getConfigCaseCount($nodeName)
-
$xNodes=$xDoc.documentElement.selectNodes(".//"&$nodeName)
-
$configCaseCount=$xNodes.length
-
EndFunc
-
;....................................................................................
-
;....函数功能:得到节点总数
-
;....参 数:
-
;....返 回 值:无
-
;....................................................................................
-
Func getCoverage($passCount,$caseCount)
-
Return Round($passCount/$caseCount,2)*100&"%"
-
EndFunc
-
-
;....................................................................................
-
;....函数功能:得到用例数
-
;....参 数:
-
;....返 回 值:无
-
;....................................................................................
-
Func getCaseCount($nodeName)
-
Dim $nodeCount=0
-
Dim $i
-
getNodeCount($nodeName)
-
For $i=0 To $testCaseCount-1
-
if $xNodes($i).ChildNodes.length>0 Then
-
$nodeCount=$nodeCount+1
-
EndIf
-
-
Next
-
$passCaseCount=$testCaseCount-$nodeCount
-
$faileCaseCount=$nodeCount
-
EndFunc
-
;....................................................................................
-
;....函数功能:得到用例数
-
;....参 数:
-
;....返 回 值:无
-
;....................................................................................
-
Func getText($nodeName)
-
Return $nodeName.childNodes(0).text
-
EndFunc
-
-
;....................................................................................
-
;....函数功能:得到用例数
-
;....参 数:
-
;....返 回 值:无
-
;....................................................................................
-
Func getCountStr()
-
Dim $countStr
-
$countStr='用例总数:<span class="tipsNum">'&$testCaseCount&'</span>'& _
-
'用例通过:<span class="tipsNum">'&$passCaseCount&'</span>'& _
-
'用例失败:<span class="tipsNum red">'&$faileCaseCount&'</span>'& _
-
'通过率:<span class="tipsNum">'&getCoverage($passCaseCount,$testCaseCount)&'</span></td>'
-
$htmlBeginStr=$htmlBeginStr&$countStr& _
-
'</thead>'& _
-
'</table>'& _
-
'</div>'& _
-
'</div>'& _
-
'<div class="clear"></div>' & _
-
'<div class="block" id="listCon">'& _
-
'<div class="blockuk">'& _
-
'<table class="caseTab tabp100">' & _
-
'<thead class="uiHeader">'& _
-
'<tr>'& _
-
'<td class="wd300">用例名称</td>'& _
-
'<td class="wd150">功能名称</td>'& _
-
'<td class="wd85">执行结果</td>'& _
-
'<td class="wd85">执行时间</td>'& _
-
'<td class="wd388">失败原因</td>'& _
-
'</tr>'& _
-
'</thead>'& _
-
'<tbody>'
-
EndFunc
-
-
-
-
Func getAttributes($nodeName,$attributeName)
-
Return $nodeName.attributes.getNamedItem($attributeName).nodeValue
-
EndFunc
-
-
Func getCaseDetails()
-
Global $caseDetails[$testCaseCount]
-
For $i=0 To $testCaseCount-1
-
if $xNodes($i).ChildNodes.length>0 Then
-
$caseDetails[$i]=getAttributes($xNodes($i),"name")&"#"& _
-
"failed"&"#"& _
-
getAttributes($xNodes($i).ChildNodes(0),"message")&"#"& _
-
"-"
-
Else
-
$caseDetails[$i]=getAttributes($xNodes($i),"name")&"#"& _
-
"pass"&"#"& _
-
getAttributes($xNodes($i),"time")&"#"& _
-
"-"
-
EndIf
-
Next
-
EndFunc
-
-
Func getCaseConfig()
-
Global $caseConfig[$configCaseCount]
-
For $i=0 To $configCaseCount-1
-
$caseConfig[$i]=getAttributes($xNodes($i),"name")&"#"& _
-
getText($xNodes($i))
-
Next
-
EndFunc
-
-
-
Func getSplit($str,$tag,$strNum)
-
Dim $arr=StringSplit($str,$tag)
-
Return $arr[$strNum]
-
EndFunc
-
-
-
-
-
-
Func formatCaseDetails()
-
initXml($xmlReportFilePath)
-
getCaseCount("testcase")
-
getCountStr()
-
getCaseDetails()
-
initXml($xmlConfigFilePath)
-
getConfigCaseCount("testcase")
-
getCaseConfig()
-
Global $formatCaseDetails[$testCaseCount]
-
For $i =0 To $testCaseCount-1
-
For $j=0 To $configCaseCount-1
-
If StringInStr($caseDetails[$i],getSplit($caseConfig[$j],"#",1)) <> 0 Then
-
$formatCaseDetails[$i]=$caseDetails[$i]&"#"&getSplit($caseConfig[$j],"#",2)
-
ExitLoop
-
ElseIf $j==$configCaseCount-1 Then
-
$formatCaseDetails[$i]=$caseDetails[$i]&"#"&"-"
-
EndIf
-
Next
-
Next
-
EndFunc
-
-
Func createHtml()
-
Dim $caseDetailsStr
-
For $i=0 To $testCaseCount-1
-
If getSplit($formatCaseDetails[$i],"#",2)=="pass" Then
-
$caseDetailsStr=$caseDetailsStr&'<tr>'&'<td class="wd300">'&getSplit($formatCaseDetails[$i],"#",1)&'</td>'& _
-
'<td class="wd150">'&getSplit($formatCaseDetails[$i],"#",5)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",2)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",3)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",4)&'</td>'& _
-
'</tr>'
-
Else
-
$caseDetailsStr=$caseDetailsStr&'<tr>'&'<td class="wd300">'&getSplit($formatCaseDetails[$i],"#",1)&'</td>'& _
-
'<td class="wd150">'&getSplit($formatCaseDetails[$i],"#",5)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",2)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",4)&'</td>'& _
-
'<td class="th85">'&getSplit($formatCaseDetails[$i],"#",3)&'</td>'& _
-
'</tr>'
-
EndIf
-
Next
-
$htmlBeginStr=$htmlBeginStr&$caseDetailsStr& _
-
'</tbody>'& _
-
'</table>'& _
-
'</div>'& _
-
'</div>'& _
-
'</body>'& _
-
'</html>'
-
-
EndFunc
-
-
Func output()
-
Dim $fso,$oFile,$pFile
-
$pFile="index.html";@WorkingDir&"\\"&
-
$fso=ObjCreate("Scripting.FileSystemObject")
-
$oFile=$fso.createTextFile($pFile,True,False)
-
$oFile.write($htmlBeginStr)
-
EndFunc
-
-
formatCaseDetails()
-
createHtml()
- output()
本文介绍了一种使用AutoIt脚本将XML格式的测试结果转换为HTML报告的方法。报告包括用例总数、通过/失败数量、通过率等统计信息,并详细列出了每个测试用例的状态及失败原因。
7093

被折叠的 条评论
为什么被折叠?



