废话 (初次发文日期 2020 年 8 月)
最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末
功能 (2022 更新)
- 测试数据隔离: 测试前后进行数据库备份/还原
- 接口间数据依赖: 需要 B 接口使用 A 接口响应中的某个字段作为参数
- 自定义扩展方法: 在用例中使用自定义方法 (如:获取当前时间戳...) 的返回值
- 接口录制:录制指定包含 url 的接口,生成用例数据
- 用例跳过:支持表达式、内置函数、调用变量实现条件跳过用例
- 动态多断言: 可(多个)动态提取实际预期结果与指定的预期结果进行比较断言操作
- 对接数据库: 讲数据库的查询结果可直接用于断言操作
- 邮件发送:将 allure 报告压缩后已附件形式发送
运行机制
- 通过读取配置文件,获取到 host 地址、提取 token 的 jsonpath 表达式,提取实际响应结果用来与预期结果比对的 jsonpath 表达式。
- 读取 excel 用例文件数据,组成一个符合 pytest 参数化的用例数据,根据每列进行数据处理(token 操作、数据依赖)
- token,写,需要使用一个正常登录的接口,并且接口中要返回 token 数据,才可以提取,token,读为该请求将携带有 token 的 header,token 无数据的将不携带 token
- 数据依赖处理,从 excel 中读取出来的格式{"用例编号":["jsonpath 表达式 1", "jsonpath 表达式 2"]},通过用例编号来获取对应 case 的实际响应结果(实际响应结果在发送请求后,回写到 excel 中),通过 jsonpath 表达式提取对应的依赖参数字段,以及对应的值,最终会返回一个存储该接口需要依赖数据的字典如{"userid":500, "username": "zy7y"},在发送请求时与请求数据进行合并,组成一个新的 data 放到请求中
- 每次请求完成之后将回写实际的响应结果到 excel 中
- 根据配置文件中配置的 jsonpath 表达式提取实际响应内容与 excel 中预期结果的数据对比
- 生成测试报告
- 压缩测试报告文件夹
- 发送邮件
目录结构
执行顺序
运行 test_api.py -> 读取 config.yaml(tools.read_config.py) -> 读取 excel 用例文件 (tools.read_data.py) -> test_api.py 实现参数化 -> 处理是否依赖数据 ->base_requests.py 发送请求 -> test_api.py 断言 -> read_data.py 回写实际响应到用例文件中 (方便根据依赖提取对应的数据)
EXcel 用例展示
运行结果
致谢
jsonpath 语法学习:https://blog.csdn.net/liuchunming033/article/details/106272542
zip 文件压缩:https://www.cnblogs.com/yhleng/p/9407946.html
这算是学习接口自动化的第一个成果,但是要应用生产环境,拿过去还需要改很多东西,欢迎交流。
视频记录 (该视频指向tag2.0
)
前往获取源码
↙↙↙阅读原文可查看相关链接,并与作者交流