jmeter使用之请求体包含多个数据
在使用jmeter做压测时,除了增加并发数,还可能在请求体中增加多个字段相同的list。如图:
如果是几百条可以复制粘贴,但是几千上万条复制粘贴就比较费时费力了。另外可能这些数据并不是完全相同,可能还需要并发执行。
一.数据容器
当请求体是由多个字段相同的list组成时,可以把这些list存放在txt文件里,通过CSV数据文件设置传参给请求体。
二.数据来源
但是成千上万条list要如何在txt文件中生成呢?
这里使用python循环,然后通过python读写文件,把循环得到的数据存入文件中,得到一个txt文件。
三.造数据代码
1.请求体里每个json数据完全相同
import json
data_text=[]
for x in range(2):
a={ #a为list
"value1": "京东"
}
data_text.append(a) #把a添加到列表里,循环多次
filename="data.txt" #在当前路径下的txt文件
with open(filename,"a",encoding="utf-8") as fd: #需要加utf-8,否则写入的内容会出现中文乱码
fd.write(json.dumps(data_text,ensure_ascii=False)) #写入内容
fd.write("\n")
fd.close()
文件输出结果:
得到一行list数据相同的数据。
2.并发数为1,请求体里json的字段相同但是某些字段的数据不同
import json
data_text=[]
for x in range(2):
a={
"value1": "京东"+str(x+1) #每次循环a的value1字段的值都不同
}
data_text.append(a)
filename="data.txt"
with open(filename,"a",encoding="utf-8") as fd:
fd.write(json.dumps(data_text,ensure_ascii=False))
fd.write("\n")
fd.close()
文件输出结果:
得到一行list数据不同的数据,如果执行多个并发时,传入txt文件的数据是相同的。
3.并发数为1,请求体里的json里包含多个相同的json
如图:嵌套循环得到数据。c包含3个a,每个a里包含2个b。
data_text=[] #放置a的list
for x in range(3): #循环3次
data_text1 = [] #放置b的list
for y in range(2): #循环2次
c={
"orderList":data_text
}
b = {
"orderLineNumber": "test_1" + str(x + 1)+ str(y + 1),
"orderNumber": "test_d" + str(x + 1)
}
a = {
"orderNumber": "test_d" + str(x + 1),
"orderLineList": data_text1
}
data_text1.append(b) #内层循环把b添加到data_text1数组里
data_text.append(a) #外层循环把a添加到data_text数组里
filename="2_5.txt"
with open(filename,"a",encoding="utf-8") as fd:
fd.write(json.dumps(c,ensure_ascii=False))
fd.write("\n")
fd.close()
输出结果:
4.并发数大于1,请求体里json的字段相同但是某些字段数据不同
import json
def coniface_list(numi,numj):
i = 1 #i为需要的并发数
while i <= numi:
a = []
j = 1 #j为列表包含的list数量
while j <= numj:
b = {
"value1": "京东"+ str(i) + str(j) #每次循环b的value1字段不同
}
a.append(b)
j += 1
filename = "data.txt"
with open(filename,"a",encoding="utf-8") as f:
f.write(json.dumps(a, ensure_ascii=False))
f.write("\n")
i += 1
f.close()
coniface_list(3,3) #调用函数
文件输出结果:
得到三行不同数据,可以在并发大于1时传入txt文件的数据,每个并发传入的数据是不同的。
四.python代码操作
1.随机数
sa=[]
num="0123456789"
for i in range(6):
sa.append(random.choice(num)) #把选择的随机数添加到sa里
salt="".join(sa)
2.随机值
sourcePlatform=["天猫","抖音","京东"]
Platform=random.choice(sourcePlatform)
print(Platform)
3.转义
json.dumps(json.dumps(c))
4.转字节数组
c=json.dumps(c) #json转str
c=bytes(c.encode('utf-8')) #str转byte
c_byte=base64.b64encode(c)
jmeter使用之请求体包含多个数据的更多相关文章
- Jmeter 提取http请求返回值里json数据参数化方法
第三方插件下载地址:http://jmeter-plugins.org/downloads/all/ 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins ...
- Jmeter中使用HTTP信息头管理器发送json格式请求体的接口
Jmeter中,如果请求体的格式为x-www-form-urlencoded,则不需要添加请求头,保持默认即可,但是如果遇到接口的请求体格式为json时,就要用到HTTP信息头管理器,在线程组上右键— ...
- spring boot aop打印http请求回复日志包含请求体
一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 『动善时』JMeter基础 — 14、使用JMeter发送Post请求
目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...
- 转:应用JMeter测试solr请求
使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...
- elasticsearch(5) 请求体搜索
上一篇提到的轻量搜索非常简单便捷,但是通过请求体查询可以更充分的利用查询的强大功能.因为_search api中大部分参数是通过HTTP请求体而非查询字符串来传递的. 一 空查询 对于空查询来说,最简 ...
- HTTP请求行、请求头、请求体详解
HTTP 请求头各参数具体含义 Header 解释 示例Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/htmlAccept-Charset 浏览器可以接 ...
- HTTP请求行、请求头、请求体详解(转)
转自 https://blog.csdn.net/u010256388/article/details/68491509/ HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...
- body-parser Node.js(Express) HTTP请求体解析中间件
body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日 781 声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...
随机推荐
- PostgreSQL:数据库迁移与版本控制
title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...
- Huggingface使用
目录 1. Transformer模型 1.1 核心组件 1.2 模型结构 1.3 Transformer 使用 1.3.1 使用 Hugging Face Transformers 库 1.3.2 ...
- 聊聊DeepSeek的MLA和GRPO
关注公众号回复1 获取一线.总监.高管<管理秘籍> 结合近期对DeepSeek的探索,对之前文章的内容做一些更新,主要是两个方面:训练过程的优化策略GRPO,以及架构侧的一个创新MLA. ...
- STM32 DMA操作
https://blog.csdn.net/u014754841/article/details/79525637?utm_medium=distribute.pc_relevant.none-tas ...
- 8-2 MySQL 索引的设计原则(超详细说明讲解)
8-2 MySQL 索引的设计原则(超详细说明讲解) @ 目录 8-2 MySQL 索引的设计原则(超详细说明讲解) 1. 测试数据准备 2. 哪些情况适合创建索引 2.1 字段的数值有唯一性的限制 ...
- Vue 组件里添加键盘事件 keydown keyup不生效问题
我在使用VueDraggableResizable制作一个窗口,然后需要点击esc关闭窗口. 但是键盘事件没有生效,写任何位置都不行. 解决方案 在需要触发esc事件的div或其他上给出 tabind ...
- PCI-5565PIO主要应用场景
PCI-5565PIO主要应用场景包括军事领域.工业自动化和控制系统.仿真与培训以及数据采集与分发.在军事领域,PCI-5565PIO可用于航空航天系统的飞行控制计算机.导航系统和传感器系统之间的 ...
- Spark core 总结
Spark RDD五大特性 1.RDD由一组partition组成 2.每一个分区由一个task来处理 3.RDD之间有一些列依赖关系 4.分区类算子必须作用在kv格式得RDD上 5.spark为ta ...
- 「二」移动光标、vim进入与退出、文本编辑之删除、插入、添加、编辑、光标移动、撤销
移动光标 h:向左移动 j:向下移动 k:向上移动 l:向右移动 vim进入与退出 按鍵, 确保处于正常模式 輸入:q! <回车>(丢弃所做的任何改动) 文本编辑之删除 在正常模式下修改命 ...
- 【Unit4】UML解析器(模型化设计)-作业总结 & 【BUAA-OO】课程总结
第四单元作业总结 1.题目概述 UML类图建模与查询(8) + UML顺序图/状态图建模与查询(3+3) + 模型错误检查(9),三次迭代共23条命令 2.构架设计 一开始以为和第三单元差不多,稍微用 ...