用excel格式书写的接口用例执行脚本
创建测试用例和测试结果集文件夹:

excel编写的接口测试用例如下:

1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig
2 params 对应requests的params

3 data,对应requests的data

有些参数是动态的:写参数名,程序中用eval()函数转化

baseapi.py
#-*-coding:utf-8-*-
"""
接口基类
dinghanhua
baseapi.py
"""import requests
from requests.cookies import RequestsCookieJarclass apitest:def __init__(self):self.cookies = RequestsCookieJar()def response_text(self,method,url,encoding='utf-8',**kwargs):"""请求函数"""response = requests.request(method,url,cookies=self.cookies,**kwargs)self.cookies.update(response.cookies) #更新cookiesif encoding: # 如果有响应编码则配置编码response.encoding = encodingresult = response.textreturn result
runtest.py
#-*-coding:utf-8-*-
"""
读取excel用例并执行
dinghanhua
"""import xlrd
from xlutils.copy import copy
from baseapi import apitest
import datetime
import os
import re
import logging;logging.basicConfig(level=logging.INFO)def run_testcase(excelpath,sheetindex=0):# region 读取excel和sheetbook = xlrd.open_workbook(excelpath) # 打开exceltry:sheet = book.sheet_by_index(sheetindex) # 读取sheetwb = copy(book) # 转变成xlwt book对象wsheet = wb.get_sheet(sheetindex)except IndexError:logging.info("读取的sheet不存在")raise IndexError("读取的sheet不存在")#endregion# region 读取和运行用例testapi = apitest()fail = 0 # 用例执行失败个数success = 0 # 用例执行成功个数for row in range(1, sheet.nrows):isrun = str(int(sheet.cell_value(row,8))).strip() # 是否运行if isrun == '1': # 判断用例是否运行;运行则读取其他字段label = str(sheet.cell_value(row, 1)).strip()method = str(sheet.cell_value(row,2)).strip()url = str(sheet.cell_value(row, 3)).strip()encoding = str(sheet.cell_value(row, 4)).strip()headers = str(sheet.cell_value(row, 5)).strip()params = str(sheet.cell_value(row, 6)).strip()data = str(sheet.cell_value(row, 7)).strip()checkpoint = str(sheet.cell_value(row, 9)).strip()try:params = eval(params) # 参数转变 从字符串转变成字典或带入参数;转变不了则不处理except:passtry:data = eval(data)except:passtry:headers = eval(headers)except:passactual_result = testapi.response_text(method=method,url=url,params=params,data=data,encoding=encoding,headers=headers) # 获取响应if re.search(checkpoint,actual_result): #测试通过写excel ; 测试通过计数加1wsheet.write(row,10,'pass')success += 1logging.info(label+'test pass')else: #测试不通过写excel ; 测试不通过计数加1wsheet.write(row,10,'fail')wsheet.write(row,11, actual_result) # 写入响应fail += 1logging.info("%s test fail.检查点:%s,响应结果:%s"%(label,checkpoint,actual_result))# endregion# region 保存测试结果filepath = os.path.join(os.path.dirname(__file__),'testresult') # 测试结果目录if not os.path.exists(filepath): # 目录不存在则创建os.mkdir(filepath)filename = os.path.join(filepath,datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')+'.xls') # 测试结果文件wb.save(filename) # 保存文件logging.info('测试结果:测试通过%s,测试不通过%s。测试结果文件路径:%s'%(success,fail,filename))# endregion#执行测试用例# 测试要用的动态参数
nowtime = datetime.time().strftime('%Y%m%d%H%M%S%f') # 时间戳
today = str(datetime.date.today()) # 当前日期
newdate = (datetime.datetime.now()-datetime.timedelta(minutes=30)).strftime('%Y-%m-%d %H:%M:%S') # 当前时间点前半小时
sso = "test" # sso串
id = 1 # id
token = 'token' # token,通过抓包获取excelpath = r'C:\Users\dinghanhua\PycharmProjects\ApiTest\testcase\testcase1.xlsx' # excel用例文件
run_testcase(excelpath=excelpath,sheetindex=1) # 逐条读取并运行用例
运行之后testresult文件夹下查看已生成的测试结果文件,文件名=测试运行时间戳
该项目用jmeter、postman也可以做接口测试。用python脚本可以用excel写好用例直接执行。脚本中的检查点等可根据实际项目再调整。

相关文章:
用excel格式书写的接口用例执行脚本
创建测试用例和测试结果集文件夹: excel编写的接口测试用例如下: 1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig 2 params 对应requests的params 3 data,对应requests的data 有些参数是动态的&a…...
【flink】Chunk splitting has encountered exception
执行任务报错: Chunk splitting has encountered exception 错误信息截图: 完整的错误信息: 16:30:43,911 ERROR org.apache.flink.runtime.source.coordinator.SourceCoordinator [SourceCoordinator-Source: CDC Sourceorg.jobslink.flink…...
单元测试用例分组 demo
文章目录 目标1、使用 Category 进行用例分组(1)设置用例组(2)编写测试类,case设置对应的用例组(3)编写执行类(4)查看运行结果(5)联系项目 2、参数…...
观察者模式(Observer)
观察着模式是一种行为设计模式,可以用来定义对象间的一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图…...
20天学会rust(二)rust的基础语法篇
在第一节(20天学rust(一)和rust say hi)我们配置好了rust的环境,并且运行了一个简单的demo——practice-01,接下来我们将从示例入手,学习rust的基础语法。 首先来看下项目结构: 项目…...
Stephen Wolfram:嵌入的概念
The Concept of Embeddings 嵌入的概念 Neural nets—at least as they’re currently set up—are fundamentally based on numbers. So if we’re going to to use them to work on something like text we’ll need a way to represent our text with numbers. And certain…...
springboot,swagger多个mapper包,多个controller加载问题
启动类添加MapperScan({"xxx.xxx.xxx.mapper","xxx.xxx.xxx.mapper"}) swagger配置类添加 Bean public Docket api01() {return new Docket(DocumentationType.SWAGGER_2)//.enable(swagger_is_enabl).apiInfo(new ApiInfoBuilder().title("你的title…...
湖大CG满分教程:作业训练四编程题20. 回文串(暴力×动态规划算法√)
问题描述 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。给你一个字符串,问最少在字符串尾添加多少字符,可以使得字符串变为回文串。 输入格式 有多组测试数据。 每组测试数据第一行是一个正整数N…...
使用toad库进行机器学习评分卡全流程
1 加载数据 导入模块 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import numpy as np import math import xgboost as xgb …...
Python数据容器——列表(list)
数据容器入门 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如:是否支持重复元…...
Linux CEF(Chromium Embedded Framework)源码下载编译详细记录
Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…...
Adaptive AUTOSAR—— Communication Management 3.1
9 Communication Management 9.1 What is Communication Management? 通信管理是自适应平台架构中的一个功能集群。 作为一个功能集群,通信管理向应用程序提供了一个C++ API,实现了面向服务的通信。服务是一个由应用程序提供的功能单元,可以在运行时被另一个应用程序动态…...
VMnet0 桥接设置
VMnet0 一定要设置为你的硬件物理网卡,不能设置自动,不然后,网线一断,就再也连不上了。必须重启电脑才能连上,这个问题找了很久才找到。 下面有个hyper-V虚拟网卡,如果选自动的话,物理网卡一掉…...
Sublime Text 4 Build 4151 4152 发布及注册方法
Sublime Text 是一个商业代码编辑器。它原生支持许多编程语言和标记语言,用户可以通过插件来扩展它的功能,这些插件通常是由社区建立的,并以自由软件许可证的形式维护。为了方便插件,Sublime Text 有一个 Python API。 Sublime T…...
第八篇: K8S Prometheus Operator实现Ceph集群企业微信机器人告警
Prometheus Operator实现Ceph集群企业微信告警 实现方案 我们的k8s集群与ceph集群是部署在不同的服务器上,因此实现方案如下: (1) ceph集群开启mgr内置的exporter服务,用于获取ceph集群的metrics (2) k8s集群通过 Service Endponit Ser…...
软件单元测试
单元测试目的和意义 对于非正式的软件(其特点是功能比较少,后续也不有新特性加入,不用负责维护),我们可以使用debug单步执行,内存修改,检查对应的观测点是否符合要求来进行单元测试,…...
Redis | 集群模式
Redis | 集群模式 随着互联网应用规模的不断扩大,单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性,分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库,自然也有了自己的分布式部署方式…...
8.3day04git+数据结构
文章目录 git版本控制学习高性能的单机管理主机的心跳服务算法题 git版本控制学习 一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容 安装g…...
04-5_Qt 5.9 C++开发指南_QComboBox和QPlainTextEdit
文章目录 1. 实例功能概述2. 源码2.1 可视化UI设计2.2 widget.h2.3 widget.cpp 1. 实例功能概述 QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个QLineEdit 用作输入。OComboBox 除了显示可见下拉列表外,每个…...
Sqlserver_Oracle_Mysql_Postgresql不同关系型数据库之主从延迟的理解和实验
关系型数据库主从节点的延迟是否和隔离级别有关联,个人认为两者没有直接关系,主从延迟在关系型数据库中一般和这两个时间有关:事务日志从主节点传输到从节点的时间事务日志在从节点的应用时间 事务日志从主节点传输到从节点的时间࿰…...
下载视频不如用Via,一分都不花
找了很长时间,没想到竟然这么简单,为啥早没发现呢! 工具的名称叫Via浏览器是个App,没错在安卓手机或平板运行的工具。 缺点:pc下用不了,有些视频下不了,如爱奇艺等。苹果手机是否能用不知道,自己试吧。 优点:操作方便、简单,即使你是小白也能熟练操作。免费,一分…...
Go语言WebSocket服务器tocket:轻量级高性能实时通信方案
1. 项目概述:一个轻量级、高性能的WebSocket服务器 最近在折腾一个需要实时双向通信的物联网项目,传统的HTTP轮询方案在延迟和服务器开销上都不太理想,WebSocket自然就成了首选。在技术选型时,我习惯性地会去GitHub上搜罗一番&…...
DLSS Swapper完整指南:如何5分钟提升游戏性能50%?
DLSS Swapper完整指南:如何5分钟提升游戏性能50%? 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 您是否曾经为游戏卡顿而烦恼?是否在寻找提升帧率的方法却不知从何入手?…...
从压测到瓶颈定位:一次完整的性能分析思路
很多人刚接触压测时,会产生一种错觉:“压测不就是看 QPS 吗?”但压测的本质,从来不是“跑数字”,而是:找到系统的性能极限,以及限制系统性能的真正瓶颈。 本文会围绕下面几个核心问题࿰…...
Prometheus数据采集扩展:claw-prometheus项目详解与实战
1. 项目概述:一个为Prometheus量身定制的“数据抓取器”在云原生和微服务架构大行其道的今天,监控系统的地位不言而喻。Prometheus,作为这个领域的“事实标准”,以其强大的多维数据模型和灵活的查询语言(PromQL&#x…...
Claude集成OpenClaw:多智能体框架的模型驱动开发实践
1. 项目概述:当Claude遇上OpenClaw,一个智能体协作框架的诞生最近在AI智能体开发圈里,一个名为“gungwang/claude-into-openclaw”的项目引起了我的注意。乍一看这个标题,你可能会有点懵——“Claude”是Anthropic家的那个大语言模…...
python海龟绘图之窗口背景
可以将海龟绘图的窗口背景设置为纯色或者图片。1 将窗口背景设置为纯色通过bgcolor()函数设置窗口的背景色。该函数有四种使用方法,分别是① bgcolor()② bgcolor(colorstring)③ bgcolor((r, g, b))④ bgcolor(r, g, b)1.1 bgcolor()bgcolor()不带参数的形式&#…...
谷歌搜索量在哪里查询?新手3分钟掌握的查词流程
外贸独立站日均访问量停留在个位数。文章更新了100多篇,带来真实询盘的网页往往只有两三个。把大量工作时间花在无人问津的短语上,写出来的几千字长文如同扔进海里的石头。谷歌每天处理全世界超过85亿次查询请求。你打算把一批1000个不锈钢保温杯卖到海外…...
从源码到应用:VTK编译与配置全流程实战
1. VTK简介与环境准备 VTK(Visualization Toolkit)是一款强大的开源三维可视化库,广泛应用于医学影像、科学计算、工程仿真等领域。我第一次接触VTK是在开发一个医学图像处理项目时,当时被它丰富的渲染功能和跨平台特性所吸引。对…...
【附C源码】循环队列的C语言实现
【附C源码】循环队列的C语言实现 队列作为基础数据结构之一,在操作系统调度、消息传递、广度优先搜索等场景中均有广泛应用。本文将探讨一种基于循环数组的队列实现方案,该方案在内存利用率和操作效率之间取得了较好的平衡。 设计思路 传统数组实现队列时…...
