五、Page Object模式

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


下一篇:linux下运行oracle脚本的例子