接口自动化测试框架:python+unittest/pytest+requests+ddt+openpyxl+pymysql+logging
框架设计思路 数据驱动+结构分层(可读性、可维护性、可扩展性) 数据驱动 将维护数据与代码分离,接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余 结构分层 数据层
datas测试数据层
测试数据的支撑 data.xls
用于存放所有的测试数据,测试参数(可以使用excel,json,yaml,数据库来存储)
用例层 用例的执行 test_register.py test_recharge.py 逻辑层
cases测试执行逻辑层
公用的方法的封装与提取 doexcle.py do_mysql.py http_requests.py logger.py等模块
,用于存放所有的测试用例类
configs配置层 用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据 logs 日志层 用于保存运行框架过程中产生的所有有效日志信息 reports报告层 用于保存所有的测试报告文件(一般为html报告) run.py用例启动文件 使用套件加载用例,批量执行并生成报告 scripts 脚本封装层 用于保存所有的操作封装模块(yaml,excel,log.mysql,requests,参数化等) unittest/pytest 定义一个测试用例类,具体的方法来维护测试用例的生命周期,测试场景行为,测试用例 前置场景,行为,期望结果,实际结果,断言方法,Setup teardown方法 Requests 接口调用 ,支持http请求的库,API 简洁,提供不同的http请求方法,支持session,cookies
Requests请求库,来向接口发起请求,Requests接口请求
DDT:数据驱动 ,ddt 类装饰器,data 测试方法装饰器 unpack解包可迭代的数据类型
普通用户,数据库,配置文件—(基础数据)
Openpyxl 数据管理 excel管理数据,使用openpyxl模块来进行excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据)
用 Openpyxl来处理excel,存储测试数据(用例数据)
Pymysql :数据库交互,数据校验Pymysql数据库效验
Pymysql来连接mysql数据库,执行sql数据,进行数据效验
eval/json:数据格式的转换 Eval将python支持的格式转换成对应的格式 logging :日志处理, 统一日志输出格式,渠道,级别,执行结果的记录,便于定位问题
使用logging模块来创建日志器 ,记录项目中的日志信息
Jenkins 持续集成
1、测试框架unittest
- 提供不同范围的setUp(测试准备)和tearDown(测试清理)方法
setUp(前置测试准备) 用于测试用例执行前的初始化工作
访问数据库(增删改查操作)、登陆浏览器
tearDown(后置测试清理) 用于测试用例执行后的清理工作
关闭数据库(增删改查操作)、关闭浏览器
- 提供丰富的断言方法
2、接口请求requests
requests模块主要用于发送http请求,做接口自动化;
requests.get(url, params, args) 在get请求中使用params参数,会自动把参数key、value拼接在url后;
requests.post(url, data, json, args)
data传递的是content-type:application/x-www-from-urlencoded,表单形式的数据
格式:a=1&b=2
json传递的是content-type:application/json,json格式的数据
格式:{“a”: 1, “b”: 2}
data只能传简单的只有键值对的dict或者是str格式
json一般只能传dict格式
json.dumps(data) 序列化把字典格式的数据转换成str格式
json.loads(data) 反序列化把str格式转换成字典格式
3、数据管理yaml
pyyaml来配置文件(configparse,pyyaml)
4、测试报告allure
5、日志管理loguru
用的logging这个python自带模块,根据日志的不同级别,info,debug,warning,error,critical针对性的写了一个日志类,设置好日志输出格式,将日志指定保 存到.txt结尾的文本文件里面