功能
1.实现:get/post请求(上传文件)::理论上其他delete/put等请求也实现了,支持restful接口规范
2.发送邮件
3.生成allure测试报告
4.压缩测试报告文件
5.数据依赖
运行机制
1.通过读取配置文件,获取到host地址、提取token的jsonpath表达式,提取实际响应结果用来与预期结果比对的jsonpath表达式。
2.读取excel用例文件数据,组成一个符合pytest参数化的用例数据,根据每列进行数据处理(token操作、数据依赖)
3.token,写,需要使用一个正常登录的接口,并且接口中要返回token数据,才可以提取,token,读为该请求将携带有token的header,token 无数据的将不携带token
4.数据依赖处理,从excel中读取出来的格式{“用例编号”:[“jsonpath表达式1”, “jsonpath表达式2”]},通过用例编号来获取对应case的实际响应结果(实际响应结果在发送请求后,回写到excel中),通过jsonpath表达式提取对应的依赖参数字段,以及对应的值,最终会返回一个存储该接口需要依赖数据的字典如{“userid”:500, “username”: “zy7y”},在发送请求时与请求数据进行合并,组成一个新的data放到请求中
5.每次请求完成之后将回写实际的响应结果到excel中
6.根据配置文件中配置的jsonpath表达式提取实际响应内容与excel中预期结果的数据对比
7.生成测试报告
8.压缩测试报告文件夹
9.发送邮件
已知问题
执行接口消耗时间变长,代码乱(语言学的不扎实),频繁读写excel(可考虑用字典存每个接口的实际响应,取值直接从响应字典中取出)整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中使用了101ms,考虑和频繁读写用例数据导致
环境与依赖
名称 | 版本 | 作用 |
---|---|---|
python | 3.7.8 | |
pytest | 6.0.1 | 底层单元测试框架,用来实现参数化,自动执行用例 |
allure-pytest | 2.8.17 | allure与pytest的插件可以生成allure的测试报告 |
jsonpath | 0.82 | 用来进行响应断言操作 |
loguru | 0.54 | 记录日志 |
PyYAML | 5.3.1 | 读取yml/yaml格式的配置文件 |
Allure | 2.13.5 | 要生成allure测试报告必须要在本机安装allure并配置环境变量 |
xlrd | 1.2.0 | 用来读取excel中用例数据 |
yagmail | 0.11.224 | 测试完成后发送邮件 |
requests | 2.24.0 | 发送请求 |
目录结构
执行顺序
运行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回写实际响应到用例文件中(方便根据依赖提取对应的数据)
config.ymal展示
server:test: http://127.0.0.1:8888/api/private/v1/# 实例代码使用的接口服务,已改为作者是自己的云服务器部署。(后端源码来自b站:https://www.bilibili.com/video/BV1EE411B7SU?p=10)dev: http://49.232.203.244:8888/api/private/v1/
# 实际响应jsonpath提取规则设置
response_reg:# 提取token的jsonpath表达式token: $.data.token# 提取实际响应的断言数据jsonpath表达式,与excel中预期结果的数据进行比对用response: $.meta
file_path:case_data: ../data/case_data.xlsxreport_data: ../report/data/report_generate: ../report/html/report_zip: ../report/html/apiAutoTestReport.ziplog_path: ../log/运行日志{time}.log
email:# 发件人邮箱user:123456.com# 发件人邮箱授权码password:ASGCSFSGS# 邮箱hosthost:smtp.163.comcontents:解压apiAutoReport.zip(接口测试报告)后,请使用已安装Live Server 插件的VsCode,打开解压目录下的index.html查看报告# 收件人邮箱addressees:["收件人邮箱1","收件人邮箱2","收件人邮箱3"]title:接口自动化测试报告(见附件)# 附件地址enclosures: ["../report/html/apiAutoTestReport.zip",]