在 UI 自动化测试过程中,面对简单的业务场景,常常会遇到这样的挑战:

  • 简略的录制/回放速度快,但无奈适应简单场景;
  • 编写自动化测试脚本比拟灵便,但工作量大且可维护性差;
  • 以往的封装技术(PageObject)能够适应各种 UI 场景,但构造涣散,无奈在多我的项目中迁徙;
    因而,测试团队通常还须要一种定制测试框架,用以补救现有框架的毛病。
    因为 UI 自动化测试框架围绕 UI 界面应用,因而,仍旧选用 PageObject 设计模式对 UI 及测试进行封装,同时配合 Pytest 单元测试将脚本可能无效的组织、连贯利用起来,从而进步框架的可维护性和可读性。
    因为测试框架基于 PageObject 设计模式,次要方向为 PO 改良,数据驱动,异样解决等,比方:
  • 测试数据的数据驱动:将数据存储到内部 yaml 文件中,利用 yaml 工具进行数据读取;
  • 数据步骤的数据驱动:将操作步骤放到内部 yaml 文件中,利用 yaml 工具对操作步骤进行读取,用专门函数解析并实现操作步骤;
  • 自动化异样解决机制:对元素查找模块进行封装和改良,包含如何解决弹窗;
    作为通用的 UI 测试框架, PageObjet 不仅实用于 Web 自动化测试,也可实用 Appium 挪动自动化测试,其长处如下:
  • 缩小代码反复
  • 进步测试用例可读性
  • 进步测试用例可维护性


本案例将对雪球 App 进行 Page Objetct 封装与改良。
当启动雪球 App 时,会进入首页。点击搜寻框进入搜寻页,搜寻某支股票而后判断股价是否大于 200:

PageObjetct 的模块关系如下,所有的模块要继承 BasePage , App 实现启动,重启,进行等操作, Main 实现进入搜寻页,进入股票页等操作:

base_page 模块是所有 page 类的父类,其中定义了公共办法,比方封装上面的 find 办法后,能够让子类调用 find :
App 模块封装 app 的启动,重启,进行等办法,当 app 启动时会进入 main 页面,因而在上面的 main 办法要 return Main ,Main 类的定义在前面会解说:
Main 模块是首页的 PageObject ,其中的办法封装了首页的重要性能,比方上面代码中的 goto_search_page 封装了点击搜寻并跳转到 Search 页:
Search 模块能够搜寻一支股票,还能够获取股票的价格,比方下图:

封装代码如下:
最初对上述代码建设测试,新建测试模块 test_search :

以上,供大家参考,欢送一起留言探讨。