1.能够大致讲一下你们接口自动化框架是怎么搭建的吗?
好的,我们采用unittest和ddt数据驱动思想搭建测试框架,(对数据excel读取、yaml配置、Requests接口请求、Re参数化、Pymysql数据库效验、日志等模块实现封装),其中,用
1.Openpyxl来处理excel,存储测试数据(用例数据)
2.pyyaml来配置文件(configparse,pyyaml)
- Pymysql来连接mysql数据库,执行sql数据,进行数据效验
4.Requests请求库,来向接口发起请求
5.使用logging模块来创建日志器,记录项目中的日志信息
6.使用HttpTestRunner来生成HTML测试报告
7.使用re模块来实现参数化(正则匹配)
8.使用动态创建属性(类属性)的机制来实现接口之间的依赖 (setattr getattr)
比如:我们项目中客服指派订单的时候,需要上一个接口订单ID,首先要对上一个接口发送请求,获取订单id,通过实例化对象,创建属性名,获取属性值,从而实现指派订单接口的成功请求。
分层设计
为了提升接口自动化测试框架的拓展性、稳定性、完整性,进而提升测试效率,往往会将测试框架工程化,
整个流程会分为不同的层级,每个层级之间保持相对独立
cases
测试执行逻辑层,用于存放所有的测试用例类
configs
配置层,用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据)
datas
测试数据层,用于存放所有的测试数据,测试参数(可以使用excel,json,yaml,数据库来存储)
libs
自定义库文件层,用于存放自定义或者二次开发的库文件
logs
日志层,用于保存运行框架过程中产生的所有有效日志信息
reports
报告层,用于保存所有的测试报告文件(一般为html报告)
scripts
脚本封装层,用于保存所有的操作封装模块(yaml,excel,log.mysql,requests,参数化等)
run.py
用例启动文件,使用套件加载用例,批量执行并生成报告
2.你做接口自动化测试时,测试数据放哪里?
- 对于一些基础配置比如环境地址、手机号码、一些不怎么变的数据配置可以放到conf文件
- 接口测试需要用到的数据可以放数据库表,也可以放到