Android自动化HTML报告(二)

上一节中我们说了如何用testutils.jar这个包生成我们的结果文件,文件的类型是xml,如下图:
auto.JPG
23分钟前 上传
下载附件(110.88 KB)

这个xml的结果,我们发给领导,敢问哪个领导看着不目瞪口呆?现在各个网站没有找到andriod的html报告,下面是我自己的方法去解析生成的html报告。

需要:
1.自动化case标题和功能case标题对应的xml文件:如下图


2.autoit v3软件

下面:我们需要用autoit写脚本去解析这两个xml,组合成我们需要的报告.报告如下图:
auto2.JPG
12分钟前 上传
下载附件(27.4 KB)


autoit脚本如下:
  1. Dim $xmlReportFilePath="TEST-all.xml" ;xml格式的report存放路径 @WorkingDir&"\\"&
  2. Dim $xmlConfigFilePath="TEST-config.xml" ;xml格式的用例配置文件存放路径 @WorkingDir&"\\"&
  3. Dim $testCaseCount ;测试用例的总数
  4. Dim $passCaseCount ;通过的测试用例数
  5. Dim $faileCaseCount ;失败的测试用例数
  6. Dim $autoTestName ;自动化用例名称
  7. Dim $functionTestName ;功能用例名称
  8. dim $executeTime ;执行时间
  9. Dim $failedMessage ;失败原因
  10. Dim $htmlBeginStr
  11. Dim $xDoc,$xNodes,$Node
  12. Dim $configCaseCount


  13. $htmlBeginStr='<!DOCTYPE html>'& _
  14. '<html>'& _
  15. '<head>'& _
  16. '<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />'& _
  17. '<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />'& _
  18. '<link rel="stylesheet" type="text/css" href="static/css/index.css" />'& _
  19. '<title>xxx QA Test Report</title>'& _
  20. '</head>'& _
  21. '<body>'& _
  22. '<div class="block fixedTop tm bdrb">'& _
  23. '<div class="blockuk topBar">'& _
  24. '<table class="titleTab tabp100">'& _
  25. '<thead>'& _
  26. '<td width="20%" class="txtl">'& _
  27. '<img src="static/images/homeLogo.png" align="absmiddle"/></td>'& _
  28. '<td width="30%" class="txtl" id="testTitle">'& _
  29. 'xxx QA Test Report</td>'& _
  30. '<td width="" class="txtr" id="tips">'
  31. ;....................................................................................
  32. ;....函数功能:初始化xml
  33. ;....参 数: xml路径
  34. ;....返 回 值:无
  35. ;....................................................................................
  36. Func initXml($xmlPath)
  37. $xDoc=ObjCreate("MSXML2.DOMDocument")
  38. $xDoc.load($xmlPath)

  39. EndFunc

  40. ;....................................................................................
  41. ;....函数功能:得到节点总数
  42. ;....参 数:
  43. ;....返 回 值:无
  44. ;....................................................................................
  45. Func getNodeCount($nodeName)
  46. $xNodes=$xDoc.documentElement.selectNodes(".//"&$nodeName)
  47. $testCaseCount=$xNodes.length
  48. EndFunc

  49. Func getConfigCaseCount($nodeName)
  50. $xNodes=$xDoc.documentElement.selectNodes(".//"&$nodeName)
  51. $configCaseCount=$xNodes.length
  52. EndFunc
  53. ;....................................................................................
  54. ;....函数功能:得到节点总数
  55. ;....参 数:
  56. ;....返 回 值:无
  57. ;....................................................................................
  58. Func getCoverage($passCount,$caseCount)
  59. Return Round($passCount/$caseCount,2)*100&"%"
  60. EndFunc

  61. ;....................................................................................
  62. ;....函数功能:得到用例数
  63. ;....参 数:
  64. ;....返 回 值:无
  65. ;....................................................................................
  66. Func getCaseCount($nodeName)
  67. Dim $nodeCount=0
  68. Dim $i
  69. getNodeCount($nodeName)
  70. For $i=0 To $testCaseCount-1
  71. if $xNodes($i).ChildNodes.length>0 Then
  72. $nodeCount=$nodeCount+1
  73. EndIf

  74. Next
  75. $passCaseCount=$testCaseCount-$nodeCount
  76. $faileCaseCount=$nodeCount
  77. EndFunc
  78. ;....................................................................................
  79. ;....函数功能:得到用例数
  80. ;....参 数:
  81. ;....返 回 值:无
  82. ;....................................................................................
  83. Func getText($nodeName)
  84. Return $nodeName.childNodes(0).text
  85. EndFunc

  86. ;....................................................................................
  87. ;....函数功能:得到用例数
  88. ;....参 数:
  89. ;....返 回 值:无
  90. ;....................................................................................
  91. Func getCountStr()
  92. Dim $countStr
  93. $countStr='用例总数:<span class="tipsNum">'&$testCaseCount&'</span>'& _
  94. '用例通过:<span class="tipsNum">'&$passCaseCount&'</span>'& _
  95. '用例失败:<span class="tipsNum red">'&$faileCaseCount&'</span>'& _
  96. '通过率:<span class="tipsNum">'&getCoverage($passCaseCount,$testCaseCount)&'</span></td>'
  97. $htmlBeginStr=$htmlBeginStr&$countStr& _
  98. '</thead>'& _
  99. '</table>'& _
  100. '</div>'& _
  101. '</div>'& _
  102. '<div class="clear"></div>' & _
  103. '<div class="block" id="listCon">'& _
  104. '<div class="blockuk">'& _
  105. '<table class="caseTab tabp100">' & _
  106. '<thead class="uiHeader">'& _
  107. '<tr>'& _
  108. '<td class="wd300">用例名称</td>'& _
  109. '<td class="wd150">功能名称</td>'& _
  110. '<td class="wd85">执行结果</td>'& _
  111. '<td class="wd85">执行时间</td>'& _
  112. '<td class="wd388">失败原因</td>'& _
  113. '</tr>'& _
  114. '</thead>'& _
  115. '<tbody>'
  116. EndFunc



  117. Func getAttributes($nodeName,$attributeName)
  118. Return $nodeName.attributes.getNamedItem($attributeName).nodeValue
  119. EndFunc

  120. Func getCaseDetails()
  121. Global $caseDetails[$testCaseCount]
  122. For $i=0 To $testCaseCount-1
  123. if $xNodes($i).ChildNodes.length>0 Then
  124. $caseDetails[$i]=getAttributes($xNodes($i),"name")&"#"& _
  125. "failed"&"#"& _
  126. getAttributes($xNodes($i).ChildNodes(0),"message")&"#"& _
  127. "-"
  128. Else
  129. $caseDetails[$i]=getAttributes($xNodes($i),"name")&"#"& _
  130. "pass"&"#"& _
  131. getAttributes($xNodes($i),"time")&"#"& _
  132. "-"
  133. EndIf
  134. Next
  135. EndFunc

  136. Func getCaseConfig()
  137. Global $caseConfig[$configCaseCount]
  138. For $i=0 To $configCaseCount-1
  139. $caseConfig[$i]=getAttributes($xNodes($i),"name")&"#"& _
  140. getText($xNodes($i))
  141. Next
  142. EndFunc


  143. Func getSplit($str,$tag,$strNum)
  144. Dim $arr=StringSplit($str,$tag)
  145. Return $arr[$strNum]
  146. EndFunc





  147. Func formatCaseDetails()
  148. initXml($xmlReportFilePath)
  149. getCaseCount("testcase")
  150. getCountStr()
  151. getCaseDetails()
  152. initXml($xmlConfigFilePath)
  153. getConfigCaseCount("testcase")
  154. getCaseConfig()
  155. Global $formatCaseDetails[$testCaseCount]
  156. For $i =0 To $testCaseCount-1
  157. For $j=0 To $configCaseCount-1
  158. If StringInStr($caseDetails[$i],getSplit($caseConfig[$j],"#",1)) <> 0 Then
  159. $formatCaseDetails[$i]=$caseDetails[$i]&"#"&getSplit($caseConfig[$j],"#",2)
  160. ExitLoop
  161. ElseIf $j==$configCaseCount-1 Then
  162. $formatCaseDetails[$i]=$caseDetails[$i]&"#"&"-"
  163. EndIf
  164. Next
  165. Next
  166. EndFunc

  167. Func createHtml()
  168. Dim $caseDetailsStr
  169. For $i=0 To $testCaseCount-1
  170. If getSplit($formatCaseDetails[$i],"#",2)=="pass" Then
  171. $caseDetailsStr=$caseDetailsStr&'<tr>'&'<td class="wd300">'&getSplit($formatCaseDetails[$i],"#",1)&'</td>'& _
  172. '<td class="wd150">'&getSplit($formatCaseDetails[$i],"#",5)&'</td>'& _
  173. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",2)&'</td>'& _
  174. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",3)&'</td>'& _
  175. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",4)&'</td>'& _
  176. '</tr>'
  177. Else
  178. $caseDetailsStr=$caseDetailsStr&'<tr>'&'<td class="wd300">'&getSplit($formatCaseDetails[$i],"#",1)&'</td>'& _
  179. '<td class="wd150">'&getSplit($formatCaseDetails[$i],"#",5)&'</td>'& _
  180. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",2)&'</td>'& _
  181. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",4)&'</td>'& _
  182. '<td class="th85">'&getSplit($formatCaseDetails[$i],"#",3)&'</td>'& _
  183. '</tr>'
  184. EndIf
  185. Next
  186. $htmlBeginStr=$htmlBeginStr&$caseDetailsStr& _
  187. '</tbody>'& _
  188. '</table>'& _
  189. '</div>'& _
  190. '</div>'& _
  191. '</body>'& _
  192. '</html>'

  193. EndFunc

  194. Func output()
  195. Dim $fso,$oFile,$pFile
  196. $pFile="index.html";@WorkingDir&"\\"&
  197. $fso=ObjCreate("Scripting.FileSystemObject")
  198. $oFile=$fso.createTextFile($pFile,True,False)
  199. $oFile.write($htmlBeginStr)
  200. EndFunc

  201. formatCaseDetails()
  202. createHtml()
  203. output()
来自:http://www.51autotest.com/forum.php?mod=viewthread&tid=1854&extra=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值