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.    
    40. EndFunc

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

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

    62. ;....................................................................................
    63. ;....函数功能:得到用例数
    64. ;....参    数:
    65. ;....返 回 值:  无
    66. ;....................................................................................
    67. Func getCaseCount($nodeName)
    68.    Dim $nodeCount=0
    69.    Dim $i
    70.    getNodeCount($nodeName)
    71.    For $i=0 To $testCaseCount-1
    72.           if $xNodes($i).ChildNodes.length>0 Then
    73.                  $nodeCount=$nodeCount+1
    74.           EndIf
    75.                  
    76.    Next             
    77.           $passCaseCount=$testCaseCount-$nodeCount
    78.           $faileCaseCount=$nodeCount
    79. EndFunc
    80. ;....................................................................................
    81. ;....函数功能:得到用例数
    82. ;....参    数:
    83. ;....返 回 值:  无
    84. ;....................................................................................
    85. Func getText($nodeName)
    86.    Return $nodeName.childNodes(0).text
    87. EndFunc

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



    119. Func getAttributes($nodeName,$attributeName)
    120.           Return $nodeName.attributes.getNamedItem($attributeName).nodeValue
    121. EndFunc

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

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


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





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

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

    195. EndFunc

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

    203. formatCaseDetails()
    204. createHtml()
    205. output()
    来自:http://www.51autotest.com/forum.php?mod=viewthread&tid=1854&extra=
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值