持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情 自动化使用的测试框架是什么?简述自动化框架的设计、维护
测试框架:python+unittest+requests+ddt+openpyxl+pymysql+logging
python:入门简单,语法简洁
unittest :定义一个测试用例类,具体的方法来维护测试用例的生命周期,测试场景行为,测试用例 前置场景,行为,期望结果,实际结果,断言方法,Setup teardown方法
requests:接口调用 ,支持http请求的库,API 简洁,提供不同的http请求方法,支持session,cookies,
ddt :数据驱动,ddt 类装饰器,data 测试方法装饰器 unpack解包可迭代的数据类型
普通用户,数据库,配置文件---(基础数据)
openpyxl: 数据管理 excel管理数据,使用openpyxl模块来进行excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据)
pymysql:数据库交互,数据校验
eval,json:数据格式的转换 Eval将python支持的格式转换成对应的格式
logging:日志处理, 统一日志输出格式,渠道,级别,执行结果的记录,便于定位问题
jenkins:持续集成
2/框架设计思路:数据驱动+结构分层(可读性,可维护性,可扩展性)
数据驱动:将维护数据与代码分离,接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余
结构分层:数据层+用例层+逻辑层
数据层:测试数据的支撑 data.xls
用例层:用例的执行 test_register.py test_recharge.py
逻辑层:公用的方法的封装与提取 doexcle.py do_mysql.py http_requests.py logger.py等模块
3/框架设计步骤:
准备测试数据: EXCEL表准备测试用例---excel数据的读取---参数值的替换
发起请求:请求方法(get/post方法进行封装---URL的拼接(不同---参数转化为字典
拿到请求的返回值:解析返回值code,status,msg信息
断言
好处:
1、自动化测试用例和手工测试用例的完美结合,减少重复工作
2、配置灵活,可以自主切换测试环境,执行测试用例
3、常用功能进行封装,逻辑清晰,易于维护
4、统一执行入口,管理测试用例集:
run.py模块通过模糊查找来选择需要执行的测试用例
5、持续集成,定时构建,快速反馈
具体的在这个项目中自动化怎么应用到实际的,您对自动化结果的分析
完成所有的自动化测试框架的设计和实现后,进行接口测试,然后集成到
jenkins,配置定时执行,生成html报表,查看测试通过率,查看接口的功能
每次发版时,进行回归测试,新功能开发未提测前
PO 模式(Page Object Model),页面对象设计模式,UI 自动化测试中常用的设计模式。 使用 PO 模式的自动化测试脚本能减少大量重复代码,使测试脚本更加具有维护性,可读性更好,同时具备更高的复用性。
PO 模式的主要思想是把页面对象,包含页面上的控件以及操作控件的动作,抽象封装成一个类。测试业务逻辑的代码,基于页面对象来完成相应的页面操作,固定调用格式为:
xxxPage.xxxComponent.xxxOperate
当页面有变动时,只需要修改 PageObject 类中的代码即可,测试业务逻辑的代码不用修改。使用 PO 模式和未使用 PO 模式的测试脚本代码,两者的区别可以通过下面的伪代码对比出来。
PO 模式伪代码:
class BaiduPage(){
inputElement = findElemetByID("kw");
searchButtonElement = findElemetByID("su");
}
test_serach(keyWord){
BaiduPage.inputElement.input(keyWord);
BaiduPage.searchButtonElement.click;
}
上面的伪代码只是抽象了页面控件,也可以把页面控件的操作也写到页面对象类中,抽象粒度需要结合业务实际来决定,并不是抽象维度越高越好。
非PO 模式伪代码:
test_serach(keyWord){
inputElement = findElemetByID("kw");
searchButtonElement = findElemetByID("su");
inputElement.input(keyWord);
searchButtonElement.click;
}
使用PO 模式,需要操作页面控件的测试方法中,按照固定的调用格式直接调用即可,不用再重复写页面控件的代码,页面控件一处编写可以多处复用。非 PO 模式,需要操作页面控件的地方,都需要再写一遍页面控件的代码,造成代码冗余还不利于维护。