03-创建测试脚本框架

来源:互联网 发布:ui平面设计软件 编辑:程序博客网 时间:2024/05/16 05:47
PO模式测试脚本框架:
完善框架 补充用例
(1) 什么是PageObject?
简称PO,这是一个设计模式,其实设计模式就是代码的架构,一个整体的框架。例如mvc 就是模型-视图-控制的一个代码架构,mvp就是-模型-视图-主持 这样的一个架构。PageObject翻译过来就是页面对象的意思,就是把页面对象和逻辑操作分开
(2) PageObject的好处
做UI自动化时定位特别依赖页面,一旦页面发生变更就不得不跟着去修改页面定位。 
,假设你想对一个元素定位操作,你可能会编写下面的代码:
driver.findElement(By.id("comit")).click();

于是问题就出来了,这样代码冗余就高了。都写一块了,后期难维护。你有10个地方对这个元素做了这个操作,哪天这个控件的元素变了,你就不得不去修改10个地方。 
那么po的好处就出来了,方便维护、减少代码冗余、逼格高
(3) 目录格式结构
  • base //放封装好的基类(pageAppium、operationAppium、CaseAppium)
  • cases //用例 (用例层:调用【opeartion】层实现用例)
  • opeartion //放逻辑处理 (操作层:调用【pages】层模拟手工操作当前app页面控件的方法封装)
  • pages //页面元素处理 (控件层:获取当前app页面控件的方法封装)

(4) base+pages+opeartion+cases包代码
写case时,使用UIAutomatorViewer获取每个界面的控件元素信息
给每个case添加断言
多个case时可以设置优先级
给每个case设置@Test注解
uiautomatorviewer在sdk的tool目录下,运行uiautomatorviewer.bat即可(可以右击发送快捷方式到桌面)。打开后的界面是这样的: 
界面详解 

open: 打开保存的截图文件 
device screenshot: 获取当前界面所有控件内容 
device screenshot with compressed hierarchy: 选择只获取界面中呈现在你面前的控件 
save: 保存界面控件内容到文件
Expand All: 展开全部结点 
Toggle naf nodes: 查看不能被uiautomator测试工具访问到的控件。这些控件只设置了有限的属性,所以导致uiautomator无法获取到这些控件。 
搜索、上一个、下一个、清除搜索结果、搜索到的数量、坐标 

(5) 运行case测试用例
使用Testng来执行测试用例
1.下载Testng
Android studio 添加依赖即可 ,在gradle的dependencies下面添加 
(当前最新是6.9.6)
compile'org.testng:testng:6.9.6'
2.添加Testng插件
AndroidStudio已经默认添加了,在File-Setting-Plugins 搜索即可看到 
3.使用Testng
新建一个测试类,新建方法,在方法上面添加注解即可
4.运行Testng
在测试的module的根目录下新建testng.xml,名字随你,内容正常即可。详细的内容配置可以看官网:http://testng.org/doc/documentation-main.html#testng-xml
右键,运行即可


(6) 输出报告
测试报告ReportNg
testng自身带有测试报告,但是内容难以观看理解,所以这里利用了ReportNg
1. 导入jar包
这个包是经过修改的,支持中文,放到测试的module的libs文件夹,右键add as library,不懂的看前面的文章。
再在gradle的dependencies里面添加两个包:
compile'com.google.inject:guice:4.1.0' compile'org.anarres.gradle:gradle-velocity-plugin:1.0.7'

2. 添加监听器
修改刚刚的testng_login.xml ,添加了listeners,再次运行这个xml,在module目录下就会看到有test-output测试报告的文件夹,有html和xml格式的
<?xml version="1.0" encoding="UTF-8"?><suitename="Suite" > <!--parallel="true" 并行--><testname="Test" > <classes><classname="com.example.cases.Login" /> </classes><listeners><listenerclass-name="org.uncommons.reportng.HTMLReporter" /> <listenerclass-name="org.uncommons.reportng.JUnitXMLReporter" /> </listeners></test><!--Test--></suite><!--Suite-->

3. 查看测试报告
在index.html右击选择浏览器打开
封装和demo打包下载: http://download.csdn.net/detail/niubitianping/9647551

原创粉丝点击