Python接口自动化测试工具(Pytest+Allure+jsonpath+xlrd+excel、支持Restful接口规范)

本文介绍了使用Python的Pytest、Allure、jsonpath、xlrd和Excel进行接口自动化测试的工具,支持RESTful接口规范。框架实现了请求方法封装、数据依赖处理、发送邮件、生成Allure测试报告等功能。通过读取配置文件和Excel用例数据,进行参数化测试,每次请求后将实际响应结果回写到Excel中进行断言和依赖处理。目前存在的问题是执行效率较低,未来计划优化代码结构。
摘要由CSDN通过智能技术生成

功能

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",] 

EXcel用例展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值