目录
1. PO模式
2. Airtest项目中PO模式的运用
1. PO模式
PO模式或POM模式,被称为Page Object Model,页面对象模型。
其基本思想是以面对对象编程为基础,将每个界面抽象为类,将界面的元素封装为类的属性,将界面的操作封装为方法。
1.1 PO模式的分层
项目的基本结构按照PO模型从上到下分为三层或四层:
三层:
1. 运行层
2. 用例层
3. 页面层
四层:
1. 运行层
2. 用例层
3. 页面层
4. 基础操作层
1.2 运行层
运行层run.py文件,调用用例层的用例,生成报告
1.3 用例层
用例层case文件夹,生成页面类对象,调用页面类的方法实现用例的流程操作,不涉及具体的页面操作
1.4 页面层
页面层page文件夹,包含所有页面类,编写页面的元素信息和对页面元素的操作
1.5 基础操作层
基础操作层basePage文件夹,主要是把一些基础操作,比如click、touch、swipe等和相应的等待语句,wait或sleep,以及相应的异常捕获和截图进行二次封装
建议先熟悉三层的PO模式再过渡到4层的PO模式,更好理解项目架构
2. Airtest项目中PO模式的运用
这里以blackjack.apk游戏demo为范例,讲解项目中如何使用PO三层模式
2.1 项目架构
一般按照从下到上的方式构建,比较方便调试,因此一般的构建顺序是:
1. 构建页面层
2. 构建用例层
3. 编写运行层
2.2 构建页面层
将页面元素的截图定义为页面类的属性
将页面元素的操作定义为页面类的方法
例如:main_menu_screen.py
2.3 编写用例层
按照分层思想,用例层只生成页面类的对象,并通过页面对象调用相应的方法实现操作,不要涉及具体的元素操作。
例如:case_001_play_game.py
建议每个用例单独初始化设备并连接,开关一次App,避免用例多了以后的互相干扰
2.4 编写运行层
负责调用要执行的用例,以及生成报告,不要涉及页面操作
例如:run.py
2.5 pic文件夹
页面的层的元素截图都放在此文件夹,在编写页面层的页面类时使用,可按照界面继续生成子文件夹分类
例如:blackjack/pic/main_menu_screen/快速开始.png
最好在页面类的元素截图路径使用相对路径,方便项目移植和后续的持续集成
2.6 log文件夹
log文件夹下的截图和log.txt在运行时自动生成,可以通过修改run.py中的语句
中的__file__、logdir=True、logpath=True来修改
2.7 运行
2.7.1 运行单个用例
直接对用例文件右键或快捷键ctrl+shift+F10运行blackjack/case文件下的某个用例,例如
case_001_play_game.py
2.7.2 运行多个用例
默认是扫描项目下case文件夹的所有py文件
suite = unittest.defaultTestLoader.discover('./case/', pattern='*.py')
可以更改扫描文件夹和pattern里的正则表达式只执行某个模块用例,或者某些用例,例如:
suite = unittest.defaultTestLoader.discover('./case/', pattern='case_*.py')
#将只把case_开头的用例加入到测试套件
2.8 其它
演示项目的代码可以从gitee上下载:
https://gitee.com/jeknight/airtest/tree/master/blackjack_po