BeanShell实现保存POST请求参数值到本地

Jmeter读取CSV文件,请求参数乱码 Jmeter读取CSV文件,请求参数乱码1、修改本地配置文件,jmeter.properties,修改以下配置项sampleresult.default.encoding=UTF-8重启Jmeter2、修改http请求编码如果有请求默认值,尽量修改请求默认值的编码,避免需要重复修改每一个请求“content encoding utf-8”3、添加beanShell PostProcessorpre... 阅读详情

背景

隔壁项目组同事找到我,说想要使用JMeter调用接口批量跑一批数据,数据量大概10万,接口的请求体和响应体如下,要求将响应状态码为1000的deviceId保存到本地。这里需要思考的问题是,如何将POST请求中请求体参数值提取出来并保存?在这里记录我当时给出的方案。

请求体:

{
        "deviceId": "12345678901234567890",
        "eventType": 1
}

响应体:

{
    "code": 1000,
    "data": {
        "alarmType": 1,
        "status": 0
    },
    "message": "success"
} 

操作步骤

1.添加一个CSV 数据文件设置元件

将10万个deviceId存储到本地csv文件,接口调用时,从本地读取请求参数值。

CSV文件配置如下:

 

2.添加一个HTTP请求录入接口请求信息 

请求参数值从csv文件读取,配置如下:

3.添加一个JSON提取器,提取响应状态码

JSON提取器配置如下: 

 4.添加一个调试取样器,运行并查看提取结果 

 

5.添加一个BeanShell后置处理程序,编写脚本 

可以使用log.info()将日志打印出来,在控制台查看是否正确

脚本如下:

import java.net.URLDecoder;
import org.json.*;
import java.io.BufferedWriter;
import java.io.FileWriter;

	String statusCode=vars.get("code"); //获取JSON提取器提取到的参数值
	int code= Integer.parseInt(statusCode); //jmeter内部变量都是String类型,需要强转
	log.info("状态码为:"+code); //用于调试,打印日志
	String samplerData = prev.queryString;  // 只取post data 数据
	JSONObject requestBody=new JSONObject(samplerData); //获取请求体
	String subData = requestBody.get("deviceId").toString(); // 获取deviceCode的value值
	String deviceCode = URLDecoder.decode(subData,"utf-8"); //避免中文乱码
	log.info("设备编码为:"+subData); //用于调试,打印日志
	FileWriter fstream =null;
	BufferedWriter out =null;
	if(code==1000){
		try {
			fstream = new FileWriter("F:\\device.csv",true);  //写入csv文件,路径下无文件时自动创建
			out = new BufferedWriter(fstream);
           	out.write(deviceCode+"\n");    //写入的数据
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally{
            try {
            	if(out!=null){
            		out.close(); //关闭资源
            		}
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
            	if(fstream!=null){
            		fstream.close(); //关闭资源
            		}
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
	}

6.执行脚本,查看保存到csv文件的数据 

 

7.在线程组中设置相应的线程数

通过前面1-6步操作调通了脚本,就可以设置线程组批量跑这十万数据啦,线程组设置如下:

MacBook上5分钟搞定Jmeter接口压测:自动化结果保存实战指南 性能测试是保障软件系统稳定性和可扩展性的关键环节,其核心原理是通过模拟多用户并发请求,评估系统在高负载下的响应能力、吞吐量和资源消耗。在众多性能测试工具中,Jmeter凭借其开源、跨平台和强大的图形化界面,成为工程师进行接口压测和负载测试的常用选择。对于使用macOS的开发者而言,Jmeter不仅能提供可视化的脚本调试便利,更能通过BeanShell脚本等扩展功能实现测试流程的自动化,显著提升日常开发验证和性能排查的效率。本文聚焦于在Mac环境下,如何快速部署Jmeter,并利用其后置处理器实现压测结果的自 阅读详情

相关推荐

JMeter自动化测试:BeanShell后置处理器实现Token自动提取与CSV存储

在接口测试和性能测试中,自动化数据流转是提升效率的关键。JMeter作为主流的性能测试工具,其核心原理是通过模拟多线程并发请求来评估系统性能。为了实现测试数据的自动化处理,工程师常借助后置处理器提取响应数据,并结合文件操作技术构建数据闭环。其中,BeanShell后置处理器因其能够执行Java代码,成为实现复杂逻辑的利器,尤其适用于解决Token等动态数据的自动提取与持久化存储问题。通过将提取的Token写入CSV文件,再利用JMeter的CSV数据文件设置元件读取,可以轻松实现测试数据的自产自销,大幅提升

weixin_27791839的博客 238

jmeter高阶系列--beanshell返回值中提取参数

jmeter高阶系列--beanshell返回值中提取参数

明天是Spring的博客 3711

【Jmeter】的元件使用介绍:(六)取样器详解

Jmeter的取样器有:Http请求、JDBC请求、Beanshell取样器、调试取样器、JSR223取样器、FTP请求、GraphQL HTTP请求、TCP请求、Java请求等,本文主要介绍Http请求、JDBC请求、Beanshell取样器、调试取样器。4、keepalive:一种长连接通信方式,即发出多次请求时,不会频繁的建立连接和断开连接,勾选后,会在请求头带有:Connection:keep-alive的信息,通过此选项可以大大节约了3次握手协议所需的时间。

专注于技术分享的博主 1621

Jmeter书中不会教你的(89)——在beanshell中使用正则表达式提取参数值

有这样一个请求,目的是获取请求url以及获取url中token的值 一/获取请求完整url方法 1)正则表达式 2)采用beanshell,利用方法getUrlAsString() rh=prev.getUrlAsString(); log.info(rh); 二/需要再灵活一点,获取url中参数值 1)同获取响应头一样,可以采用正则表达式提取器,比如提取token,括号中为提取内容的表达式,可以理解成括号左右实际就是边界值 2)采用边界值提取器,比如提取userId,观察参数左右

agrapea的博客 3174

JMeter beanShell修改http请求参数

JMeter beanShell修改http请求参数,尝试对http进行修改。

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 477

在 JMeter 中使用 BeanShell 获取 HTTP 请求体中的 JSON 数据

在 JMeter 中,您可以使用 BeanShell 处理器来获取 HTTP 请求体中的 JSON 数据。

wange6906的博客 1228

静态时序分析(STA)_深入解析Data to Data Checks的零周期挑战

本文深入解析了静态时序分析(STA)中Data to Data Checks的核心概念与零周期挑战。重点探讨了当Setup要求值超过时钟周期时,工具如何调整发射沿,并导致Hold检查的发射与捕获沿“分裂”这一反直觉现象。文章通过案例详细解读了时序报告,并提供了通过调整约束或接受多周期保持两种策略来应对这一挑战,帮助工程师正确理解和处理此类复杂时序检查。

weixin_29204205的博客 351

jmeter获取请求参数的两种方式(BeanShell )

1.定义Object类型,获取请求参数 import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; /*-----------取http请求中的body值---------------*/ Object body; Arguments args = sampler.getArguments(); it = args.iterator(); while(...

qq_36816325的博客 9270

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 395

VCSA的vmware-updatemgr服务无法启动和vSAN界面报“certificate chain is not trusted and thumbprint doesn‘t match”处理

"Unable to update CM service info"和"Server certificate chain is not trusted and thumbprint doesn't match"问题处理

jetliu05的博客 1883

Jmeter秒变操作大神:Bean Shell实现加密的post请求

• BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;• BeanShell是一种松散类型的脚本语言(这点和JS类似);• BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。• BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。• 官网。

liudefang的专栏 956

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

jmeter - 各类型接口及beanshell

2、客户端在调用tcp接口时,必须配置接口返回数据的最后一个字符,作为传输结束的标识符。客户端接受到服务端返回数据时,如果最后一个字符和配置的标识符相一致,则认为服务端数据传输完毕,关闭链接,否则,就会一直等待。如果采用HTTP协议,为了保证实时性,只能使用客户端轮询的策略来实现,这种策略会对服务器产生很大的压力。1、调用tcp接口时,只需要配置接口的ip和端口号即可,不需要url和路径。一种安全可靠的协议,很多其他协议,比如HTTP,底层使用的就是TCP。

weixin_43421392的博客 969

吊打BEVFormer!GaussianBeV实战:用3D高斯开启BEV分割新范式

GaussianBeV是一种基于3D高斯建模的BEV分割新方法,在自动驾驶感知任务中实现了SOTA性能。其核心创新在于将场景元素表示为3D高斯分布,通过均值、协方差和权重精确描述物体位置、形状和置信度,相比传统BEV方法具有更强的空间建模能力。文章详细介绍了GaussianBeV的原理、环境配置、训练推理流程及其在自动驾驶和城市3D重建中的应用,并讨论了优化方向和未来发展趋势。该方法在nuScenes等数据集上表现出色,为BEV分割任务提供了新的解决方案。

m0_71589036的博客 106

【数据集】GPM IMERG Daily Precipitation Dataset

GPM IMERG Daily Precipitation Dataset

WW、forever的博客 1219

Jmeter进阶之性能测试响应结果保存到本地

VOL 332112021-12今天距2022年21天这是ITester软件测试小栈第332次推文点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上09:00准时推送,...

weixin_42485712的博客 536

Robot Framework 7.0 报告解析

本文深入解析 Robot Framework 7.0 新增的 JSON 报告功能,手把手教你如何从 output.xml 转换为结构清晰的 output.json,并通过 Python 脚本提取关键测试指标。文章附完整示例、命令、解析脚本,支持导出为 CSV 和 Markdown,方便接入可视化看板、群通知和 CI 流程。适用于测试自动化、质量平台建设和回归趋势分析场景。

点点寒彬的博客 264

jmeter beanshell的脚本-下载文件

import org.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import jmeter.time_function; try { URL url = new URL("下载地址"); HttpURLConnection conn...

JamesPaul的博客 829

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Jmeter-提取请求及响应结果并保存到本地文件

1、新建一个本地csv文件,存放请求需要使用的变量值account,password,并配置CSV Data Set Config      2、添加一个HTTP请求3、添加正则提取器用来提取响应结果中的returnCode 4、在本地新建一个pk.csv文件,新建一个BeanShell PostProcessor后置处理器,用于提取结果并将之保存到pk.csv文件。...

nielinqi520的博客 2万+

BeanShell 的使用

在jmeter中可以使用beanshell语言,来对请求报文或者结果进行一些处理,入下面是需要对。 import com.cnn.electronic.invoice.util.SecurityUtil; import com.cnn.base.common.lang.DESedeEncrypt; String requestBody = "{'tradeNo':'T-40ec63a8d1...

kangzye 392

Jmeter断言失败提取request body中的参数

一个曾经困扰了很久的问题,翻遍全网没有找到相关的答案,分享一下。 比如一个这样的场景: post请求,使用csv参数化导入data,当响应断言错误的时候,输出并保存该请求传入的参数值(Request Body中的POST data)。 在Jmeter中,是没有类似正则提取器等处理器直接提取post data的方法的。 因此,只能添加一个BeanShell断言,自己写提取和处理方法。 取到post data的数据有两种方法: 1.prev.getSamplerData() //获取所有reque

Albert_6的博客 3688

Jmeter 拦截请求并修改数据(可用于生成签名sign等或者动态获取数据)

本文基本没有上面文字,因为存粹是代码实现,关于参数的一些讲解,已经在代码中写了注释,当然如果想了解更多的一些用法,建议参考Jmeter官网API:https://jmeter.apache.org/api/org/apache/jmeter/ 效果 请求前自定义的POST Body Data 通过Beanshell拦截,并进行参数处理以及额外数据添加后真正发出的请求Body Data 代码实现 import java.util.*; import org.apache.commo...

wangxuelei036的博客 2491

Beanshell的未授权利用

用友Beanshell解释器写入文件

m0_53183117的博客 834

jmeter-Beanshell使用

一、什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这点和JS类似);BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。BeanShell执行标准Java语句和表达

Old.Wang的博客 4826

告别单用户!用JMeter CSV参数化搞定多用户登录压力测试(附完整BeanShell脚本)

本文详细介绍了如何使用JMeter CSV参数化实现多用户登录压力测试,包括测试账号管理、Token提取与存储、BeanShell脚本编写等关键步骤。通过完整的实战案例,帮助测试工程师高效模拟真实业务场景下的并发登录行为,提升系统性能测试的准确性和可靠性。

weixin_30924087的博客 338
上一篇: JMeter实现保存GET请求参数值到本地
下一篇: Docker
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值