使用Python写接口压测2简单递归

递归其实在压测场景用的不多,但是批量造数据或批量导出,用的比较多,常见的压测登陆,首先你要有登陆账号的csv,这个时候自己可以实现一个批量获取账号的py就很惬意。

编辑器 VScode

VSCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。

这次主要是写一个批量导出账号的示例

请求方式: GET;

参数: pageNo和pageSize;

最终产出2个文件

  • index.py: 执行文件
  • accounts.csv: 导出获取的所有账号

项目依赖库

# 用于http请求
pip install requests

Python和Pip版本

pip 23.2.1
Python 3.11.7

新建index.py文件-开始编码

1.请求url;请求参数;自定义头部
# 请求地址
url = 'https:xxx.cn/api/account/page'
# 请求参数
params = {'pageNo': 0,'pageSize': 0,
}
# 自定义头部
headers = {"Content-Type": "application/json;charset=utf-8",
}
2.递归请求函数
import requests# 导出账号批量拼接
accAllList = []
# 递归请求方法
def account_batches(pageNo, pageSize) {# 声明全局变量: 把定义的url,参数,自定义头部放进来global url, params, headers# 动态修改参数params['pageNo'] = pageNoparams['pageSize'] = pageSize# 使用requests库# 使用global声明的全局变量:url,params,headersresponse = requests.get(url, params=params, headers=headers)if response.status_code == 200:# 把返回结果进行处理result = response.json()# 取到对讲账号列表accList = result['data']['list']# 如果账号列表是空的代表请求完毕退出循环if len(accList) == 0:print(f"请求完毕导出中")# 导出exportAccounts()return# 合并数组accAllList.extend(accList)# 页码加1,继续递归获取账号return account_batches(pageNo+1, pageSize)else:print(f"第 {pageNo} 页账号拉取失败")
}
# 执行递归函数批量请求;从第1页开始,每页请求5000条
account_batches(1, 5000)
3.导出
# 导出用到了csv依赖需要在头部导入
import csv# accAllList内部数据格式 => [{account: 'yyh', '前端进阶者', id: 1}]
def exportAccounts():new_array = [[d['account'], d['name'], d['id']] for d in accAllList]# new_array处理后 => [['yyh', '前端进阶者', 1]]# 打开accounts.csv,'mode=w'不存在就创建并覆盖'newline'换行符;'utf-8'编码格式;with open('accounts.csv', mode='w', newline='', encoding='utf-8') as file:writer = csv.writer(file)  for account in new_array:writer.writerow(account)
4.导出后的accounts.csv依次是: 账号; 名称; 账号id
yyh,前端进阶者,1
yyh1,前端进阶者1,2
合并所有片段
# 1.用到的依赖
import csv
import requests# 2.请求url;请求参数;自定义头部
# 请求地址
url = 'https:xxx.cn/api/account/page'
# 请求参数
params = {'pageNo': 0,'pageSize': 0,
}
# 自定义头部
headers = {"Content-Type": "application/json;charset=utf-8",
}
# 3.递归请求函数
# 导出账号批量拼接
accAllList = []
# 递归请求方法
def account_batches(pageNo, pageSize) {# 声明全局变量: 把定义的url,参数,自定义头部放进来global url, params, headers# 动态修改参数params['pageNo'] = pageNoparams['pageSize'] = pageSize# 使用requests库# 使用global声明的全局变量:url,params,headersresponse = requests.get(url, params=params, headers=headers)if response.status_code == 200:# 把返回结果进行处理result = response.json()# 取到对讲账号列表accList = result['data']['list']# 如果账号列表是空的代表请求完毕退出循环if len(accList) == 0:print(f"请求完毕导出中")# 导出exportAccounts()return# 合并数组accAllList.extend(accList)# 递归执行return account_batches(pageNo+1, pageSize)else:print(f"第 {pageNo} 页账号拉取失败")
}# 4.导出csv方法
def exportAccounts():new_array = [[d['account'], d['name'], d['id']] for d in accAllList]with open('accounts.csv', mode='w', newline='', encoding='utf-8') as file:writer = csv.writer(file)  for account in new_array:writer.writerow(account)
# 5.执行递归函数批量请求;从第1页开始,每页请求5000条
account_batches(1, 5000)
执行
  • vsCode右键文件选择在集成终端中打开
    image.png
  • 在终端输入: python index.py
    image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309683.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于数据库现有表导出为设计文档

1.查询 SELECTCOLUMN_NAME 字段名,COLUMN_COMMENT 字段描述,COLUMN_TYPE 字段类型,false as 是否为主键 FROMINFORMATION_SCHEMA.COLUMNS wheretable_NAME region -- 表名2.查询结果 3.导出为excel

Python学习笔记20 - 模块

什么叫模块 自定义模块 Python中的包 Python中常用的内置模块 第三方模块的安装与使用

如何提升软件发布管理过程?

大家都说,实践出真知。在成为一位首席技术官(CTO)之前,我也是做着跑腿活,我的职业生涯是从软件工程师开始的,后来开始管理开发和 QA 团队,并负责发布管理管道。我做过上百个项目,其中…

【第十五届】蓝桥杯省赛C++b组

今年的蓝桥杯省赛已经结束了,与以往不同,今年又回到了8道题,而22,23年出现了10道题 大家觉得难度怎么样,欢迎进来讨论,博主今年没参加哈,大家聊聊,我听听大家的意见和看法哈 试题A:…

九州金榜|孩子青春期应该如何家庭教育?

青春期,是一个人从儿童走向成年的重要过渡阶段,也是心理、生理发生巨大变化的时期。面对这一特殊时期的孩子,家庭教育显得尤为重要。那么,作为家长,我们该如何进行青春期孩子的家庭教育呢?九州金榜家庭教育…

Langchain入门到实战-第一弹

Langchain入门到实战 Langchain简介官网地址Langchain概述Langchain作用Langchain开源包使用案例更新计划 Langchain简介 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://python.langchain.com/Langchain概述 LangC…

29、链表-删除链表的倒数第N个结点

思路: 首先找到倒数第N个结点 第一种方式 先统计链表的节点数,然后再次遍历len-N即可得到倒数第N个结点,然后将前一个节点的next指针指向next的下一个节点使用快慢指针,快指针先跑N个结点然后慢指针开始跑,等快指针到达尾节点后…

Kafka 简单介绍

目录 一 消息队列(MQ) 1,为什么需要消息队列(MQ 2,常见的 MQ 中间件 3,MQ 传统应用场景之异步处理 4,使用消息队列的好处 5,消息队列的两种模式 5.1点对点模式&#xf…

如何在Odoo 17库存中通过批次号和序列号追踪产品

在Odoo 17库存管理中,通过批次号和序列号追踪产品是一种确保产品从生产到销售全程可追溯的重要方式。在产品打包时或生产过程中会分配这些编号。批次号是指应用于具有相似属性的一组产品的一系列数字或代码,而序列号则是分配给特定单一物品的独特编号。O…

matlab使用教程(44)—绘制带标记的二维曲线图

在线图中添加标记是区分多个线条或突出显示特定数据点的有用方法。使用下面的一种方式添加标记: • 在线条设定输入参数(例如 plot(x,y,-s) )中包含标记符号。 • 将 Marker 属性指定为一个名称-值对组,例如 plot(x,y,Marker,s…

【干货】【常用电子元器件介绍】【晶振】--晶体振荡器/陶瓷谐振元器件的识别、检测、选用

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 一、 石英晶体振荡器 石英晶体振荡器(Quartz Crystal Oscillator)又称石英晶体谐振器,简称石英晶振或者   石英晶体振荡器是一种用于稳定频率和选择频率的电子元件,是高精度和高稳定度的…

信息系统项目管理师0051:管理基础(4信息系统管理—4.1管理方法—4.1.1管理基础)

点击查看专栏目录 文章目录 第四章 信息系统管理4.1管理方法4.1.1管理基础1.层次结构2.系统管理第四章 信息系统管理 在信息技术和数据资源要素的推动下,社会各领域已经并正在加速进入数字化的全新发展时期,基于智能、网络和大数据的新经济业态正在形成,从“数字融合”向“数…

EVenn 的维恩图综合方法(自备)

imeta最新文献:Visualizing set relationships: EVenns comprehensive approach to Venn diagrams 网址EVenn (Evenn) 提供多种在线可视化方法。 维恩图由于易于解释,可作为可视化集合关系的宝贵工具。广泛应用于代谢组学、基因…

SQLite超详细的编译时选项(十六)

返回:SQLite—系列文章目录 上一篇:SQLite数据库文件格式(十五) 下一篇:SQLite 在Android安装与定制方案(十七) 1. 概述 对于大多数目的,SQLite可以使用默认的 编译选项。但是…

Python学习笔记15 - 字符串

字符串是一个不可变的字符序列,另一个不可变的序列是元组 字符串的驻留机制 字符串的常用操作 字符串的查询 字符串的大小写转换 字符串内容 对齐操作的方法 字符串的劈分操作 字符串的判断 字符串替换 字符串合并 字符串的比较 字符串的切片 格式化字符串 字符串…

地表蒸散发遥感产品信息提取验证与融合应用

蒸散发是陆地水循环重要变量,同时对农业水资源规划与管理、全球环境变化等研究异常关键。本文主要介绍常用的区域及全球蒸散发产品,讲解蒸散发数据产品的下载、处理、可视化、数值统计等方法;蒸散发产品的验证方法、精度评价、不确定性评估&a…

程序员必读:Python 中如何完美处理日志记录?

日志记录在软件开发中扮演着至关重要的角色。它不仅可以帮助开发人员跟踪应用程序的状态和行为,还能提供有价值的诊断信息。Python 提供了内置的 logging 模块,为开发者提供了一个强大且灵活的日志记录工具。 日志的重要性 在软件开发中,对…

HW面试经验分享 | 某服蓝队初级

前言 依稀记得是22年 7、8月份参加的HW,当时是比较炎热的时候,但又夹杂一丝秋意。也是头一次去离家乡比较远的地方,多少有点忐忑……(怕被噶腰子、水土不服、吃穿用住没着落等等),但最终也是平安无事且顺利…

优化两个简单的嵌套循环

优化嵌套循环的方法通常取决于具体的情况,但有几种常见的技巧可以尝试。尽可能减少内部循环的迭代次数,这可以通过更有效的算法或数据结构来实现。如果内部循环中使用的值在外部循环中已经计算过,可以尝试在外部循环中计算并将结果存储起来&a…

zato,一个神奇的 Python 库!

大家好,今天为大家分享一个神奇的 Python 库 - zato。 Zato是一个高性能的Python企业服务总线(ESB)和应用集成框架,专为简化复杂系统间的通信和数据交换而设计。它提供了一个灵活、可扩展的平台,以支持各种集成需求,从简单的数据传…