python restful api测试框架_Python接口自动化测试框架(Pytest+Allure+jsonpath+xlrd+excel、支持Restful接口规范)...

本文介绍了一个Python接口自动化测试框架,基于Pytest、Allure、jsonpath、xlrd和Excel,支持Restful接口规范。框架包括GET/POST请求、发送邮件、生成Allure测试报告等功能。通过读取配置文件和Excel用例数据,处理数据依赖和token,每次请求后将响应结果写回Excel。已知问题包括执行速度慢和频繁读写Excel。
摘要由CSDN通过智能技术生成

废话

和几个朋友聊天然后出来的产物希望能帮到大家学习接口自动化测试,欢迎大家交流指出不合适的地方,源码在文末

功能

实现:get/post请求(上传文件)::理论上其他delete/put等请求也实现了,支持restful接口规范

发送邮件

生成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中预期结果的数据对比

生成测试报告

压缩测试报告文件夹

发送邮件

已知问题

执行接口消耗时间变长,代码乱(语言学的不扎实),频繁读写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

发送请求

目录结构

35F236C2-2F64-4891-8384-2FBFE3229F90.png

执行顺序

运行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.xlsx

report_data: ../report/data/

report_generate: ../report/html/

report_zip: ../report/html/apiAutoTestReport.zip

log_path: ../log/运行日志{time}.log

email:

# 发件人邮箱

user: 123456.com

# 发件人邮箱授权码

password: ASGCSFSGS

# 邮箱host

host: smtp.163.com

contents: 解压apiAutoReport.zip(接口测试报告)后,请使用已安装Live Server 插件的VsCode,打开解压目录下的index.html查看报告

# 收件人邮箱

addressees: ["收件人邮箱1","收件人邮箱2","收件人邮箱3"]

title: 接口自动化测试报告(见附件)

# 附件地址

enclosures: ["../report/html/apiAutoTestReport.zip",]

EXcel用例展示

Snipaste_2020-08-13_11-21-18.png

用例格式说明

脚本一览

请求方法封装

#!/usr/bin/env/python3

# -*- c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值