python使用requests+excel进行接口自动化测试
在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松地开发接口自动化测试,更快更好地完成测试工作。
下面是这两个库在接口自动化测试中可带来的好处:
1. requests可以方便地模拟发送HTTP请求,实现接口测试,支持GET、POST、PUT、DELETE等请求方式。使用requests,我们可以轻松实现对接口的请求及返回结果的处理。
import requests
response = requests.get('http://example.com')
2. requests提供了对HTTP头的复杂处理和特定认证方案的支持,包括Basic,Digest,OAuth等。这意味着我们可以轻松地实现接口的授权认证。
import requests
response = requests.get('http://example.com', auth=('user', 'pass'))
3. requests支持Cookie和Session的处理,可以用来保证用户的身份认证或后续请求的连续性。这对于需要进行多次调用接口的测试非常有用。
4. xlwt库支持将测试结果以Excel格式将结果输出或记录。接口自动化测试有的时候需要输出测试报告,xlwt可以方便地将测试结果输出为Excel表格。
import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
sheet.write(0, 0, '接口名称')
sheet.write(0, 1, '测试结果')
sheet.write(1, 0, 'test API')
sheet.write(1, 1, 'Pass')
book.save('result.xls')
5. xlwt库为测试结果提供格式化的输出,用户可以自定义表格样式以及表格内容的格式、字体、颜色、边框等,以便用户快速理解接口测试结果,对其做出有效的应对。
综上所述,requests和xlwt是Python的两个基础库,它们能够方便地完成接口自动化测试,并且大大提高测试的效率和精度。因此,如果您还没有使用它们进行接口自动化测试,不妨试试看以下的接口自动化测试框架DEMO。
完整代码
import requests
import xlwt
import xlrd
import unittest
class BaseTestCase(unittest.TestCase):url = "" # 接口请求的 URLmethod = "GET" # 接口请求的方法data = {} # 接口请求的数据headers = {} # 接口请求的头部expected_code = 200 # 预期的 HTTP 状态码expected_result = {} # 预期的响应结果def setUp(self):"""每个测试方法执行前调用"""passdef tearDown(self):"""每个测试方法执行后调用"""passdef run_case(self, case):"""动态创建的测试方法,执行测试用例"""self.url = case['url']self.method = case['method']self.data = case['data']self.headers = case.get('headers', {})self.expected_code = case.get('expected_code', 200)self.expected_result = case.get('expected_result', {})self.test_api()def test_api(self):"""测试用例实现"""response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)self.assertEqual(response.status_code, self.expected_code) # 断言响应的 HTTP 状态码是否与预期一致self.assertDictEqual(response.json(), self.expected_result) # 断言响应的结果是否与预期一致
def read_excel(file_path, sheet_name):workbook = xlrd.open_workbook(file_path) # 打开 Excel 文件sheet = workbook.sheet_by_name(sheet_name) # 获取 Excel 工作表rows = sheet.nrows # 获取行数cases = []for i in range(1, rows): # 从第 2 行开始读取测试用例case = {}case['url'] = sheet.cell_value(i, 0) # 读取接口请求的 URLcase['method'] = sheet.cell_value(i, 1) # 读取接口请求的方法case['data'] = sheet.cell_value(i, 2) # 读取接口请求的数据case['headers'] = sheet.cell_value(i, 3) # 读取接口请求的头部case['expected_code'] = int(sheet.cell_value(i, 4)) # 读取预期的 HTTP 状态码case['expected_result'] = eval(sheet.cell_value(i, 5)) # 读取预期的响应结果case['name'] = sheet.cell_value(i, 6) # 读取用例名称cases.append(case)return cases
def write_excel(file_path, sheet_name, cases):workbook = xlwt.Workbook()sheet = workbook.add_sheet(sheet_name)sheet.write(0, 0, '用例编号')sheet.write(0, 1, '用例名称')sheet.write(0, 2, '测试结果')for i, case in enumerate(cases):sheet.write(i+1, 0, i+1)sheet.write(i+1, 1, case.get('name', '') or case['url'])sheet.write(i+1, 2, '通过' if case.get('result') else '失败')workbook.save(file_path)
if __name__ == '__main__':cases = read_excel('cases.xlsx', 'Sheet1') # 读取测试用例suite = unittest.TestSuite() # 创建测试套件for case in cases:case_name = case.get('name', '') or case['url']setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))# 动态创建测试方法,并将测试用例绑定到测试方法上unittest.TextTestRunner().run(suite) # 执行测试套件write_excel('report.xls', 'Sheet1', cases) # 写入测试结果报告
下面详细介绍一下⬆️上方代码
1. 安装所需要的库和依赖项
pip install requests
pip install xlwt
2. 编写接口自动化测试基类及测试用例实现
import requests
import xlwt
import unittest
class BaseTestCase(unittest.TestCase):url = "" # 接口请求的 URLmethod = "GET" # 接口请求的方法data = {} # 接口请求的数据headers = {} # 接口请求的头部expected_code = 200 # 预期的 HTTP 状态码expected_result = {} # 预期的响应结果def setUp(self):"""每个测试方法执行前调用"""pass # 可以进行一些初始化工作def tearDown(self):"""每个测试方法执行后调用"""pass # 可以进行一些清理工作def test_api(self):"""测试用例实现"""response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)self.assertEqual(response.status_code, self.expected_code) # 断言响应的 HTTP 状态码是否与预期一致self.assertDictEqual(response.json(), self.expected_result) # 断言响应的结果是否与预期一致
3. 编写 Excel 文件读取和解析函数
import xlrd
def read_excel(file_path, sheet_name):workbook = xlrd.open_workbook(file_path) # 打开 Excel 文件sheet = workbook.sheet_by_name(sheet_name) # 获取 Excel 工作表rows = sheet.nrows # 获取行数cases = []for i in range(1, rows): # 从第 2 行开始读取测试用例case = {}case['url'] = sheet.cell_value(i, 0) # 读取接口请求的 URLcase['method'] = sheet.cell_value(i, 1) # 读取接口请求的方法case['data'] = sheet.cell_value(i, 2) # 读取接口请求的数据case['headers'] = sheet.cell_value(i, 3) # 读取接口请求的头部case['expected_code'] = int(sheet.cell_value(i, 4)) # 读取预期的 HTTP 状态码case['expected_result'] = eval(sheet.cell_value(i, 5)) # 读取预期的响应结果cases.append(case)return cases
4. 编写 Excel 结果报告写入函数
def write_excel(file_path, sheet_name, cases):workbook = xlwt.Workbook()sheet = workbook.add_sheet(sheet_name)sheet.write(0, 0, '用例编号')sheet.write(0, 1, '用例名称')sheet.write(0, 2, '测试结果')for i, case in enumerate(cases):sheet.write(i+1, 0, i+1)sheet.write(i+1, 1, case.get('name', ''))sheet.write(i+1, 2, '通过' if case.get('result') else '失败')workbook.save(file_path)
5. 编写主函数
if __name__ == '__main__':cases = read_excel('cases.xlsx', 'Sheet1') # 读取测试用例suite = unittest.TestSuite() # 创建测试套件for case in cases:case_name = case.get('name', '') or case['url']setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))# 动态创建测试方法,并将测试用例绑定到测试方法上unittest.TextTestRunner().run(suite) # 执行测试套件write_excel('report.xls', 'Sheet1', cases) # 写入测试结果报告
这是一个简单的Python接口自动化测试项目,可以通过Excel 文件管理测试用例,支持多种 HTTP 请求方法和数据格式,适用于各种接口自动化测试场景。
读到这了,希望能够“分享并转发文章”让更多同学知道。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
相关文章:

python使用requests+excel进行接口自动化测试
在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松地开发…...

Android NDK开发详解之调试和性能分析的ndk-gdb
Android NDK开发详解之调试和性能分析的ndk-gdb 要求用法选项 NDK 包含一个名为 ndk-gdb 的 Shell 脚本,可以启动命令行原生调试会话。偏好使用 GUI 的用户则应阅读在 Android Studio 中调试这篇文档。 要求 要运行命令行原生调试,必须满足以下要求&am…...

html获取网络数据,列表展示 一
html获取网络数据,列表展示 js遍历json数组中的json对象 image.png || - 判断数据是否为空,为空就显示 - <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页列表</title></head><b…...

配置管理工具-Confd
1 简介 1.1 Confd介绍 Confd是一个轻量级的配置管理工具。通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。对应的后端存储可以是etcd,redis、zookeeper等。[1] 通过…...

0基础学习PyFlink——使用DataStream进行字数统计
大纲 sourceMapSplittingMapping ReduceKeyingReducing 完整代码结构参考资料 在《0基础学习PyFlink——模拟Hadoop流程》一文中,我们看到Hadoop在处理大数据时的MapReduce过程。 本节介绍的DataStream API,则使用了类似的结构。 source 为了方便&…...

OpenCV官方教程中文版 —— 图像去噪
OpenCV官方教程中文版 —— 图像去噪 前言一、原理二、OpenCV 中的图像去噪1.cv2.fastNlMeansDenoisingColored()2.cv2.fastNlMeansDenoisingMulti() 前言 目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoising(),cv2.fa…...
AcWing 102. 最佳牛围栏(前缀和+二分+DP)
AcWing 102. 最佳牛围栏 1、问题 2、分析 (1)暴力做法 看到这道题以后,我们可以先想一个最暴力的做法,就是我们去枚举所有长度至少为 F F F的区间,然后求出这个区间的和,再求出这个区间的平均值。最后在…...

React-表单受控绑定和获取Dom元素
一、表单受控组件 1.声明一个react状态 说明:useState const [value,setValue]useState("") 2.核心绑定流程 2.1绑定react状态 <div><input value{value}type"text"></input> 2.2绑定onChange事件 说明:e.…...

python hashlib模块及实例
hashlib 模块密码加密密码撞库密码加盐 一,hashlib模块 hashlib模块是用来为字符串进行加密的模块,通过该作用就可以为用户的密码进行加密。 通过模块中的hash算法可以为任意长度的字符串加密成长度相同的一串hash值。该hash算法得到的hash值有一下几个…...

垃圾回收GC
为什么要有垃圾回收? JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响…...

kubernetes-service微服务
目录 一、service微服务 二、Ipvs模式 三、ClusterIP 1.ClusterIP 2.headless 四、NodePort 1.NodePort 2.默认端口 五、LoadBalancer 1.LoadBalancer 2.metallb 六、ExternalName 一、service微服务 Kubernetes Service微服务是一种基于Kubernetes的微服务架构&…...

让你笑到不行的笑话短视频接口,快来试试!
11在当今这个快节奏的社会中,笑话成为了许多人调节情绪的有效方法。如今,短视频平台已经成为了最受欢迎的娱乐方式之一,因此,将笑话和短视频结合起来,成为了一种很有趣的方式来带给我们欢乐。今天我们要介绍的是挖数据…...
系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY
一、演示Spring的传播行为(MANDATORY) 1.1、StockServiceImplMANDATORY /*** Author : 一叶浮萍归大海* Date: 2023/10/30 15:43* Description: 演示MANDAORY的传播行为* 外部不存在事务:抛出异常 No existing transaction found for…...
idea插件(二)-- String Manipulation(字符串处理工具)
目录 1. 安装 String Manipulation 2. 默认快捷键 3. 操作说明 3.1 变量名的形式处理 3.2 文本形式的转化...

HQChart实战教程67-worker批量计算股票指标
HQChart实战教程67-worker批量计算股票指标 什么是Worker批量指标计算示例地址步骤1. 创建一个后台工作线程类2. 发送指标计算任务3. 接收计算结果数据对接 完整源码demo_workerthread_sina.htmlhqchart_worker_sina.js HQChart插件源码地址 什么是Worker Worker 接口是 Web W…...

博客系统自动化测试项目实践
文章目录 一.测试需求分析1.功能分析2.非功能分析 二.制定测试方案(计划 策略)三.编写测试用例四.执行自动化测试用例五.编写测试报告六.项目总结 一.测试需求分析 1.功能分析 通过功能测试需求分析 2.非功能分析 非功能分析主要从:界面,性能,安全性,…...

软考高级之系统架构师系列之操作系统基础
概念 接口 操作系统为用户提供两类接口:操作一级的接口和程序控制一级的接口。操作一级的接口包括操作控制命令、菜单命令等;程序控制一级的接口包括系统调用。 UMA和NUMA UMA,统一内存访问,Uniform Memory Access,…...

制作一个可以arm架构下运行的docker镜像(for Python)
看完本篇文章,你将得到一个可以arm架构下运行的python 基础镜像。 题外话 这里直接说docker镜像有点儿草率,因为目前很多容器都是Podman了。 podman的介绍 arm和aarch傻傻分不清楚 现在这两个是一样的意思了。 arm64和aarch64之间的区别 开始制作镜…...

Goland连接服务器/虚拟机远程编译开发
创建SSH连接 SSH用于与远程服务器建立连接 Settings -> Tools -> SSH Configurations 添加新的ssh连接,Host为ip地址,Username为用户名,认证方式这里选择密码验证 全部填完后可以点击Test Connection测试连接是否成功 创建Deployment…...

大数据Doris(十四):Doris表中的数据基本概念
文章目录 Doris表中的数据基本概念 一、Row & Column...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...