1、PO
-
概念:是一种设计模式。将面向过程转变为面向对象(页面对象),整体思想是分层。
-
将某个页面的所有“元素(包含控件)属性”及“元素操作”封装在一个类(Page类)中,以page为单位进行管理。
-
目的:
-
提高复用率,可读性和编写效率。
-
测试代码与被测页面对象代码分离,降低页面变化带来的维护成本。
-
尽量使用XPath,不建议使用name,link等。 xpath是基于页面元素所处的区域。
-
分层:
-
两层
-
对象库层:页面元素和操作;
-
业务层:测试用例操作;
-
三层
-
对象库层:页面元素和操作;
-
逻辑层:封装好的功能用例模块;
-
业务层:测试用例操作;
-
四层
-
对象库层:页面元素和操作;
-
逻辑层:封装好的功能用例模块;
-
业务层:测试用例操作;
-
数据层:测试数据
-
原则
-
方法意义
-
用公共方法代表UI所提供的的服务
-
方法应嘎爱返回其他PO 或返回用于断言的 数据
-
同样的行为不同的结果可建模为不同的方法
-
不要在方法中加断言
-
字段意义
-
不要暴露页面内部的元素给外部
-
不需要建模UI内的所有元素
-
实践
-
把每个要测试的对象封装在一个page内, 这个page里包含这个对象可能的所有操作。
-
创建一个BasePage,这个BasePage包含所有待测page都能用到的公用方法,这个BasePage对应的类应该是个抽象类。
-
测试脚本自由引用page及page里的方法。
-
python里有个第三方库page-objects, 基于python实现了PageObject模式,并且封装了很多有用的方法。
- webium是基于Python的一个Page Object实现。
- PO结构大致如下
2、使用PO的例子
-
BasePage---对象层
-
LoginPage---逻辑层
-
test_login_case---业务层
BasePage.py
LoginPage.py
test_login_case
3、总结:
-
case越多使用PO模式会使代码结构更清晰
-
元素复用越多PO模式下维护非常容易
-
逻辑复用越多PO模式下维护非常容易 (如果逻辑复用多,需要多考虑逻辑层的颗粒度)
-
元素/逻辑/数据复用越多应选择更多层的PO模式