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三种请求方法中包 ...
随机推荐
- VM1038:1 (in promise) MiniProgramError {"errMsg":"navigateTo:fail webview count limit exceed"} Object解决办法
在跳转的时候,出现这,有的时候回出现,有的时候不会出现: VM1038:1 (in promise) MiniProgramError {"errMsg":"naviga ...
- “天翼云息壤杯”高校AI大赛云南赛区启动!
11月19日,首届全国"天翼云息壤杯"高校AI大赛云南赛区启动仪式在昆明理工大学举行.本次赛事由中国电信云南公司(以下简称"云南电信")和云南省计算机学会智能计 ...
- 容器的优势,在Docker中运行Tomcat
本文分享自天翼云开发者社区<容器的优势,在Docker中运行Tomcat>,作者:d****e 一.容器与虚拟机的区别是什么 虚拟机:虚拟机是通过Hypervisor(虚拟机管理系统,常见 ...
- StarUML画流程图
一.新建流程图 1.1 新建流程图 1.2 左侧操作符介绍 Flow:顾名思义就是流,用来从一个操作流向下一个操作. Process: 过程 Terminator:用在结束的时候. Dicision: ...
- DeepSeek本地部署
一.ollama ollama是一个管理和运行所有大模型.开源大模型的平台.在官网的Models中可以看到deepseek-r1的AI模型 1.在官网中下载对应系统的ollama,下载时需要开墙,或者 ...
- 使用Windows系统自带DLL修复工具修复系统缺失dll的问题
1. System File Checker(SFC) System File Checker(SFC)是Windows自带的一个工具,可以扫描系统文件并尝试修复任何受损的文件.要使用SFC,请按照以 ...
- 飞牛fnOs安装autman奥特曼机器人喂饭教程
前言 简介:autman奥特曼机器人是干什么的? autMan是机器人牵引的扩展性极强的一站式解决方案 原生支持对接qq框架.qq频道.微信框架(酷V西瓜可爱猫千寻鲲鹏).内置微信.微信客服.公众号. ...
- Typecho复制文章自带版权说明
自带版权说明代码 <script> document.body.addEventListener('copy', function (e) { if (window.getSelectio ...
- factor
factor easy_factor1 task.py from Crypto.Util.number import * from Crypto.Util.Padding import * from ...
- rust学习笔记(1)
参考 rust圣经 参考 通过例子学习rust cargo 是rust的包管理器+编译工具 创建新项目 使用下述指令创建一个新的项目 cargo new rust_learn 执行 使用 cargo ...