在使用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使用之请求体包含多个数据的更多相关文章

  1. Jmeter 提取http请求返回值里json数据参数化方法

    第三方插件下载地址:http://jmeter-plugins.org/downloads/all/ 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins ...

  2. Jmeter中使用HTTP信息头管理器发送json格式请求体的接口

    Jmeter中,如果请求体的格式为x-www-form-urlencoded,则不需要添加请求头,保持默认即可,但是如果遇到接口的请求体格式为json时,就要用到HTTP信息头管理器,在线程组上右键— ...

  3. spring boot aop打印http请求回复日志包含请求体

    一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. 『动善时』JMeter基础 — 14、使用JMeter发送Post请求

    目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...

  5. iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range

    一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...

  6. 转:应用JMeter测试solr请求

    使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...

  7. elasticsearch(5) 请求体搜索

    上一篇提到的轻量搜索非常简单便捷,但是通过请求体查询可以更充分的利用查询的强大功能.因为_search api中大部分参数是通过HTTP请求体而非查询字符串来传递的. 一 空查询 对于空查询来说,最简 ...

  8. HTTP请求行、请求头、请求体详解

    HTTP 请求头各参数具体含义 Header 解释 示例Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/htmlAccept-Charset 浏览器可以接 ...

  9. HTTP请求行、请求头、请求体详解(转)

    转自 https://blog.csdn.net/u010256388/article/details/68491509/     HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...

  10. body-parser Node.js(Express) HTTP请求体解析中间件

    body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...

随机推荐

  1. 引燃算力新基建,天翼云亮相DCIC2024第13届数据中心产业发展大会!

    近日,由中国通信企业协会主办的"第13届数据中心产业发展大会暨AIDC智能算力生态合作展览会"在北京顺利举行.现场展示了天翼云"AIDC""紫金&qu ...

  2. MySql执行Sql语句时出现“MySqlException: Parameter ‘@maxNo‘ must be defined.”的错误

    1.问题描述 具体执行的SQL和报错的信息如下图所示: 2.解决办法 连接字符串中增加Allow User Variables=True;的配置即可,如下所示: Server=192.168.2.1; ...

  3. initiator 连接target

    客户端     检查是否发现 [root@kvm1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.114.14 1 ...

  4. AI工具推荐:领先的开源 AI 代码助手——Continue

    前言 之前介绍了VS Code中的AI插件Cline与Roo Code,这两个都是根据给定一个任务,开始自动写代码的.除了这两个AI代码工具之外,在平常我还很喜欢的就是Continue . Conti ...

  5. 最小费用最大流问题的 SSP 算法

    我们已经了解最大流问题,其目标是通过网络中的各条边传输流量,尽可能地从源点流向汇点.通过经典的算法,如 Ford-Fulkerson 增广,我们能够找到一种方式,最大化从源点到汇点的流量. 然而,最大 ...

  6. mysql数据库表如何设计

    单表数据量 所有表都需要添加注释,数据量建议控制在3000万以内 不保存大字段数据 不在数据库中存储图片.文件等大数据 表使用规范 拆分大字段和访问频率低的字段,分离冷热数据 单表字段数控制在 20 ...

  7. apache和nginx關聯php的過程

    Nginx端 Nginx是一個服務器,同時也是一個功能強大的proxy服務器,除了進行http請求的代理,還可以進行其他協議請求代理(fastCgi協議),為了能使nginx理解fastCgi協議,n ...

  8. 当我老丈人都安装上DeepSeek的时候,我就知道AI元年真的来了!

    关注公众号回复1 获取一线.总监.高管<管理秘籍> 春节期间DeepSeek引爆了朋友圈,甚至连我老丈人都安装了APP,这与两年前OpenAI横空出世很不一样,DeepSeek似乎真的实现 ...

  9. 【检索类型EI、Scopus】第二届智能计算与数据分析国际学术会议(ICDA 2025)

    为探讨数据科学和计算智能领域的关键问题,促进相关交流,由黄河科技学院主办的2025年第二届智能计算与数据分析国际学术会议(ICDA 2025)将于2025年8月22日-24日在中国郑州召开.本届会议拟 ...

  10. Vulnhub-Hackme

    一.靶机搭建 选择扫描虚拟机 选择路径即可 二.信息收集 靶机信息 Name: hackme: 1 Date release: 18 Jul 2019 难度:初级,目标是通过web漏洞获得有限的权限访 ...