`
xitong
  • 浏览: 6196440 次
文章分类
社区版块
存档分类
最新评论

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=
    分享到:
    评论

    相关推荐

      android studio插件自动化删除lint-result.xml资源Demo

      这是一个删除lint-result.xml中无用资源的demo,比较简单,不过可以直接安转使用

      Selenium自动化测试:基于Python语言.azw3

      Selenium WebDriver 入门知识、Selenium Python脚本、使用unittest 编写单元测试、生成HTML格式的测试报告、元素定位、Selenium Python API 介绍、元素等待机制、跨浏览器测试、移动端测试、编写一个iOS测试脚本、...

      Android应用测试与调试实战

      详细讲解了进行Android自动化测试需要掌握的各种技术、工具和方法,包括Android自动化测试基础、Android应用的白盒自动化测试和黑盒自动化测试的技术和原理、Android服务组件和内容组件的测试、HTML 5应用和NDK应用...

      《Android应用测试与调试实战》施懿民高清PDF完整版

      它从Android应用自动化测试工程师和开发工程师的需求出发,从测试和调试两个维度,针对采用Java、HTML 5、C++&NDK;三种Android应用开发方式所需要的测试和调试技术、方法进行了细致而深入的讲解,为Android应用的...

      Macaca自动化测试之Android测试

      MacacaPC端Web自动化测试非常类似于Selenium,而移动端自动化测试非常类似于Appium,如果你搭建过Appium环境,Macaca移动端环境的搭建将非常简单。本文继承上一篇,关于Node.js神马的就不再教你安装了。...

      安卓MonkeyRunner自动化测试Lowen.zip

      lowen 基于monkeyrunner的android应用的自动化测试,并输出测试结果到html的框架 仿腾讯utest测试框架 代码有待完善,欢迎有兴趣的朋友一起讨论(目前报表里面使用echarts部分没有写数据处理逻辑,框架已搭好) ...

      appium_python_android:Android移动端自动化测试框架

      appium_pyton_android继承并封装了appium,Android移动端自动化测试框架。支持多设备并发运行testcase,直接错误log及截图功能,html输出测试报告等。简单介绍下用法:1、运行前请添加测试包、设备信息到config.yaml...

      安卓移动开发课程设计/Android期末大作业-html5游戏 Android+html5实现类似连连看安卓游戏+源代码+文档说

      2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

      工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

      鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...

      Selenium AndroidDriver

      自动化测试 webdriver 所需 java jar包 android 环境使用

      《Google Android SDK开发范例大全(第3版)》.pdf

       全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

      基于selenium 2的自动化测试从入门到精通

      展示了在嵌入式系统中使用Selenium进行自动化测试的方法,涵盖Android、 iOS和Raspberry Pi等;此外,本书还描述了Selenium Grid的架构和部署方法;最后介绍了Selenium周边的测试工具和套件。无论从深度还是广度上,...

      Google Android SDK开发范例大全(第3版) 1/5

      全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

      Airtest UI自动化框架-其他

      Airtest是一个跨平台的UI自动化框架,适用于游戏和App。 快速开始 各种运行: Airtest提供了跨平台的API,包括安装应用、模拟输入、断言等。 基于图像识别技术定位UI元素,你无需嵌入任何代码即可进行自动化。 扩展...

      mitmproxytest:Android自动模拟测试

      介绍使用mitproxy代理工具做Android自动化Mock数据测试环境搭建创建虚拟环境(python 3.7)python3.7 -m venv /Users/xinxi/PycharmProjects/mitmproxytest/venv or virtualenv venvsource venv/bin/activate 激活虚拟...

    Global site tag (gtag.js) - Google Analytics