接口自动化流程简介
框架概览(流程)
核心
获取yaml参数化数据,pytest参数化
将参数化的数据传递进page API接口内
page API接口将各类参数组成一个模板,同时将接口数据文件路径和二级目录传递给发送终端
发送终端内将传进来的模板和文件路径及二级目录通过模板转换,将接口数据内对应数据替换成模板数据,通过封装的requests接口(**核心是请求数据是字典形式,request.request(**data))去请求拿到返回接口
对于结果的校验
pytest参数化时,传入的也有一个json表达式(”.code−>0;.code->0;.code−>0;.msg->success”)
运行至最后将此表达式和响应结果传入自行封装的断言方法
方法内如果判断一致就返回pass,在外面只需要断言assert 结果是不是pass
业务层
根据业务,给接口分类统一管理
暂定一个功能页面所有接口放到一个py文件内
数据层
各接口请求地址、需要的参数.yaml(ApiData)
对于接口请求的各种数据管理(接口请求数据参数化)(TestDataPar)
- 也可以理解为后面执行用例时候的参数化
用例层
暂定一个页面(功能)统一放在一个py文件下
通用层
文件路径统一管理
token获取
常用加密(可根据自己公司继续添加加密方式)
工具层
通用请求封装(封装GET或POST请求 )
json匹配(jsonPath)、读取(loadYaml)和保存(saveYaml)函数
模板替换(关键)(无此替换,用例达不到参数化运行)
封装拿到yaml接口参数数据,并且替换以后,最终发送函数
自定义断言方式(为了灵活度,pytest自带断言感觉有点局限:code码和msg)
日志相关封装
数据库封装
鉴于每个接口都可能用到token之类的,所以将调用接口获取token放到conftest.py内,在每个pytest用例运行之前都会运行此文件获取到token
配置文件
pytest.ini可配置运行哪些东西,具体可根据自己使用百度有关配置(暂配置忽略警告)
运行的类
运行的文件
运行的命令等待
1
2
3
4
5
6[pytest]
fiterwarnings =
error
ignore::UserWarning
# 更多配置可查看pytest官方文档