在使用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. PostgreSQL:数据库迁移与版本控制

    title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...

  2. Huggingface使用

    目录 1. Transformer模型 1.1 核心组件 1.2 模型结构 1.3 Transformer 使用 1.3.1 使用 Hugging Face Transformers 库 1.3.2 ...

  3. 聊聊DeepSeek的MLA和GRPO

    关注公众号回复1 获取一线.总监.高管<管理秘籍> 结合近期对DeepSeek的探索,对之前文章的内容做一些更新,主要是两个方面:训练过程的优化策略GRPO,以及架构侧的一个创新MLA. ...

  4. STM32 DMA操作

    https://blog.csdn.net/u014754841/article/details/79525637?utm_medium=distribute.pc_relevant.none-tas ...

  5. 8-2 MySQL 索引的设计原则(超详细说明讲解)

    8-2 MySQL 索引的设计原则(超详细说明讲解) @ 目录 8-2 MySQL 索引的设计原则(超详细说明讲解) 1. 测试数据准备 2. 哪些情况适合创建索引 2.1 字段的数值有唯一性的限制 ...

  6. Vue 组件里添加键盘事件 keydown keyup不生效问题

    我在使用VueDraggableResizable制作一个窗口,然后需要点击esc关闭窗口. 但是键盘事件没有生效,写任何位置都不行. 解决方案 在需要触发esc事件的div或其他上给出 tabind ...

  7. ‌PCI-5565PIO主要应用场景

    ‌PCI-5565PIO主要应用场景包括军事领域.工业自动化和控制系统.仿真与培训以及数据采集与分发‌.在军事领域,PCI-5565PIO可用于航空航天系统的飞行控制计算机.导航系统和传感器系统之间的 ...

  8. Spark core 总结

    Spark RDD五大特性 1.RDD由一组partition组成 2.每一个分区由一个task来处理 3.RDD之间有一些列依赖关系 4.分区类算子必须作用在kv格式得RDD上 5.spark为ta ...

  9. 「二」移动光标、vim进入与退出、文本编辑之删除、插入、添加、编辑、光标移动、撤销

    移动光标 h:向左移动 j:向下移动 k:向上移动 l:向右移动 vim进入与退出 按鍵, 确保处于正常模式 輸入:q! <回车>(丢弃所做的任何改动) 文本编辑之删除 在正常模式下修改命 ...

  10. 【Unit4】UML解析器(模型化设计)-作业总结 & 【BUAA-OO】课程总结

    第四单元作业总结 1.题目概述 UML类图建模与查询(8) + UML顺序图/状态图建模与查询(3+3) + 模型错误检查(9),三次迭代共23条命令 2.构架设计 一开始以为和第三单元差不多,稍微用 ...