基于python的UI自动化测试框架

代码结构

|-----------apk 存放测试apk包
|-----------test 测试用例
|-----------config 配置文件
                |-----------device.ini 存放运行设备信息
                |-----------settings.py 存放框架运行所需全局变量
|-----------data 框架运行时数据
|-----------lib 自定义模块库
                |-----------base.py 测试用例基类,封装了driver基本操作api
                |-----------HTMLTestRunner.py 测试套件运行runner,增加截图功能
|-----------log 存放日志
|-----------page 存放页面和元素
|-----------report 存放测试报告
|-----------utils 框架工具集
                |-----------log.py 日志功能
                |-----------sendMail.py  发送邮件
                |-----------initialize.py 封装启动服务、寻找设备、重置设备状态方法
|-----------main.py           测试入口
|-----------README.md  说明文件

二、框架运行流程与代码示例
main.py 启动脚本
初始化日志
(1)初始化日志,其实就是实例化loggging对象,main.py
(2)支持输出到console控制台和日志文件两种handler,log.py
(3)初始化只需要调用一次。因为logging是单例模式,所以在main.py中如(1)中所示,需要实例化logging对象,再次使用时方式如下:
初始化测试套件,添加测试用例
(1)调试模式,可以自定义执行顺序,以及测试计划
(2)全部模式,运行test测试目录下所有以train开头的测试用例
查找可用设备
设备需要手动写入device.ini配置文件。支持多个设备同时运行,device.ini
查找设备过程中,当device.ini中设备isused值为False,则存在可用设备,然后将isused值改为True,initialize.py
启动appium服务
传入设备绑定的appium端口号,在运行测试用例过程中,可以启动多个appium服务,每个appium服务支持一次测试过程,initialize.py
运行测试套件
运行测试套件,返回TestResult测试对象。
发送测试报告
传入运行套件返回的TestResult对象,当前时间,以及测试报告路径
根据传入的TestResult计算case通过率,生成报告内容并发送给对应收件人,sendMail.py
重置设备状态
运行完成后,需要对device.ini中isused状态重置为False
三、case编写
导入与维护元素
为每个页面新建一个py文件,通过elements字典维护页面元素。自定义元素名称。元素通过元祖维护,坐标0为定位方式,坐标1为元素值
编写用例
继承base.py中Base基类,然后导入页面元素,然后根据操作类型传入封装好的driver方法。
四、case编写
基类说明
基类继承unittest.TestCase类
重写setUp
重写unittest.TestCase的setUp方法。setUp中实现了初始化appium client并与appium服务建立连接
重写teardown
重写unittest.TestCase的tearDown方法。tearDown中实现了关闭client与appium服务的连接
点击方法
传参说明,args接收类型为元祖,与元素的维护方式一致。说明:元素信息。is_necessary接收类型为布尔,默认为True。当值为True时,查找不到元素则抛异常,反之则不抛异常,继续运行用例。
输入方法
传参说明,content接收类型为String,说明:输入目标元素的值,args接收类型为元祖,与元素的维护方式一致,说明:元素信息。
检查方法
传参说明,args接收类型为元祖,与元素的维护方式一致,说明:元素信息。
返回方法
相当于点击手机返回键
截图方法
获取当前时间,以当前时间命名截图并保存。返回截图地址
open_schema_adnroid方法
打开schema app,输入跳转页面的编号。编号与地址在手机对应的txt配置文件中维护
等待说明,所有查找元素时的等待方式都为显示等待。等待策略:每1s查找一次元素,查找30次,找不到则抛异常

你可能感兴趣的:(UI自动化测试)