自动化测试-设计模式(封装)

自动化测试-设计模式(封装)

pom模式+关键字驱动模式

 

自动化框架设计思想

(1) 数据驱动测试:即英文单词Data-Driven Testing,简称DDT。

(2) 关键字驱动测试:即英文单词Keyword-Driven Testing,简称KDT。

(3) 业务流程测试:即英文单词Business Process Tesing,简称BPT。

(4) 页面对象模式:即英文单词Page Object Model,简称POM。

(5) 基于组件的测试:即英文单词Component-Based Testing,简称CBT。

pom模式:page object model 页面对象模式(UI自动化测试一种流行的设计模式)

好处:

  • 解决线性脚本的问题

  • 解决代码不能重复利用的问题

  • 后期的维护问题

分层:

  1. 基础层(base):主要放selenium原生的方法

  2. 页面对象层(po):主要放页面的元素和页面的动作

  3. 测试用例层(testcase):主要放测试用例以及测试数据

     

调用方法:测试用例层调用页面对象层,页面对象层调用基础层

po模式分层:

对象库层:封装定位元素的方法

操作层:封装对元素的操作

业务层:将一个或多个操作组合起来完成一个业务功能,比如登录、需要输入账号、密码、点击登录三个操作

image-20230325145121390

eg:

base:base_page,基类,定义项目所需的基础方法,对Selenium一些常用的api进行二次封装,如:find_element、click、send_keys、screenshot、调用JavaScript脚本的方法以及其他与浏览器相关的操作

为什么要有基类?

由于每个页面都会频繁使用这些方法,若单纯使用Selenium原始api,可能遇到一些问题,例如:某个按钮未加载完成,但已触发了点击事件,导致元素定位不到而报错。这时就可以对原始api进行二次封装,如:加入等待时间、对异常进行捕获并打印日志等,之后所有的PageObject都继承BasePage类,后续只需要调用这些封装好的方法,增强复用性 假设以后不使用Selenium这个框架,就只需要修改BasePage中的方法,不用去修改具体的测试用例业务代码 pages:page_object,页面对象层,也是PO的核心层,继承BasePage,管理页面元素以及操作元素的方法(将操作元素的动作写成方法)

cases:测试用例层,用于管理测试用例,这里会用到单元测试框架,如:Pytest、Unittest。

data:测试数据层,用于测试数据的管理,数据与脚本分离,降低维护成本,提高可移植性,如:yml 文件数据

config:配置文件层,存放整个项目需要用到的配置项,如:URL、数据库信息等

utils:CommonUtil,公共模块,将一些公共函数、方法以及通用操作进行封装,如:日志模块、yaml 操作模块、时间模块等

run.py:批量执行测试用例的主程序,根据不同需求不同场景进行组装,遵循框架的灵活性和扩展性

logs:日志模块,用于记录和管理日志,针对不同情况,设置不同的日志级别,方便定位问题

reports:测试报告层,用于测试报告的生成和管理,如:基于 Allure 生成的定制化报告

img

posted @ 2023-03-15 09:41  没事别找我  阅读(262)  评论(0编辑  收藏  举报