Jmeter的元件使用介绍:(四)前置处理器详解

Jmeter的前置处理器可以用来在取样器执行前做一些数据准备操作,也需要注意使用的作用域问题。常用的前置处理器有:用户参数、BeanShell预处理器、JDBC预处理器。

一、用户参数
【用户参数】与前面介绍过的【用户定义的变量】有相似之处,先来介绍下用户参数的使用方法再去区分两者的异同。
1、注意作用域的问题,(1)如果是放在测试计划下,则整个测试计划都可以引用该处定义的变量
(2)如果是放在线程组下,则只能在所放的线程组下引用
(3)如果是在请求下,则只能在具体请求下引用

2、用户参数有名称,用户_N的定义,下面进行实例讲解。
实例1:只定义一个用户,则在引用变量的时候,永远都是这个用户的值。如图:

 

 

执行结果:

实例2:定义多个用户,则在引用变量的时候,会进行顺序循环取对应用户的值。如图:

 

执行结果:

 

3、【用户参数】与【用户自定义的变量】的区别:
(1)【用户参数】可以给每个参数赋多个值,而【用户自定义的变量】只能赋一个值。

 

此处引发了一个思考,如果【用户参数】与【用户定义的变量】的变量名称重复的时候,会引用哪个值呢?答案是会引用到【用户参数】的值,此处是就近原则,离取样器执行前最近的一次赋值为准。如此案例中,【用户参数】与【用户定义的变量】都含有name变量,则在执行的时候,会引用了【用户参数】的值。
执行结果:

(2)【用户参数】会在每次取样器执行之前都运行一次,而【用户自定义的变量】只会运行一次,这里使用在两个元件中都使用time函数举例

 

 

 

执行结果:

 

 

可以观察到,用户参数time1的变量值每次执行请求前都会变化一次,而用户定义的变量time2的变量值都不会变。

二:Beanshell前置处理器
该元件功能十分强大,可以编写Java代码进行一些数据准备等操作。
1、先介绍下Jmeter里Beanshell的内置变量操作
(1)vars变量:用来操作Jmeter的变量值得,常用的方法有:
(1.1)vars.get("key"):从Jmeter变量中获取指定键的值
(1.2)vars.put("key","value"):向Jmeter变量设置变量键值对
例子:


附上代码:
String name=vars.get("name"); //此处获取Jmeter的变量值转换成Java的变量
log.info("获取到的变量值为:="+name);//打印一下获取的变量值

vars.put("phone","13211111111"); //向Jmeter变量中设置一个phone变量
log.info("设置phone的变量值为:="+vars.get("phone")); //打印一下设置的phone值
通过此变量可以对Jmeter变量进行设置或者获取操作。点击下右上角的三角形即可查看日志。
日志信息为:

 

(2)ctx变量:用来获取当前线程的上下文信息,常用方法:
(2.1)ctx.getVariables().get("key"):等价于vars.get("key"),从Jmeter变量中获取指定键的值
(2.2)ctx.getProperties().getProperty("key"):获取Jmeter的属性,这里可以获取Jmeter.properties配置文件下的属性。
(2.3)ctx.getThreadNum():获取当前线程组编号
例子:

附上代码:
log.info("=通过ctx形式获取一下Jmeter存储的变量:="+ctx.getVariables().get("name"));
log.info("=通过ctx形式获取一下Jmeter属性:="+ctx.getProperties().getProperty("sampleresult.default.encoding")); //此处验证下获取我们先前配置的编码属性
log.info("=====通过ctx形式获取一下当前线程编号:="+ctx.getThreadNum());

日志展示:

(3)log变量:用来记录日志,会写进jmeter.log文件中,常用方法:
(3.1)log.info():打印普通日志
(3.2)log.warn():打印警告日志
(3.3)log.error():打印错误日志
例子:

(4)props变量:用来操作jmeter的属性的,常用方法有:
(4.1)props.get("propName"):获取Jmeter的指定属性信息
(4.2)props.put("propName","propValue"):给Jmeter设置属性
(4.3)props.containsKey("key"):判断Jmeter是否存在指定key的属性
(4.4)props.contains("values"):判断Jmeter是否存在指定value的属性
例子:


附上代码:
log.info("通过props变量获取下Jmeter的编码属性:"+props.get("sampleresult.default.encoding"));
log.info("通过props变量判断下Jmeter的编码属性是否存在:"+props.containsKey("sampleresult.default.encoding"));

2、再来介绍下Beanshell的自带数组传参的使用
先看图:


Beanshell是支持将变量值传入到这里的数组的,多个值用“空格”隔开,下面举个例子:

 

3、还有更高级的功能,比如:通过导入外部Jar包,调用外部Jar包的方法,完成自定义的功能,后续介绍到高级部分再进行补充

4、下面进行实际使用
(1)、在取样器执行前,准备一些必要的参数,如时间参数

通过这个前置处理器提供了这个time变量参数,就可以在取样器中使用该变量了

执行结果:

三:JDBC预处理器
用于在执行JDBC请求前,进行一些数据准备等操作,比如脚本在执行前,需要在数据库新建一些记录等数据。
例子:通过JDBC预处理器向数据库中插入一些数据。

(1)执行JDBC预处理器前的表数据:

(2)编写JDBC预处理器

(3)执行后,查看数据库,数据新增成功了

(4)对上述例子可以改进下,有时候我们造数据的时候,可能是需要随机生成一些测试数据的,那么我们就可以通过随机变量传进去。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93224.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十七、K8s 可观测性:全链路追踪

十七、K8s 可观测性:全链路追踪 文章目录十七、K8s 可观测性:全链路追踪1、Skywalking 初识1.1 为什么需要全链路追踪平台1.2 全链路追踪核心组件及工作原理1.2.1 全链路追踪核心概念1.2.2 全链路追踪工作原理1.3 什么是Skywalking?1.4 Skywa…

2025 Gitee vs. GitLab:全面对比与选择指南

在软件研发持续加速、合规要求日益严格的背景下,选择合适的代码托管平台成为团队数字化能力建设的关键环节。尤其在中国本土市场,Gitee正凭借其深度本地化能力、全面生态整合和开源社区支撑,成为国内团队首选的开发协作平台。 一、Gitee&…

期货反向跟单忌讳问题(一): 不断调整盘手交易规则

在期货反向跟单领域,不少运营者在摸着石头过河的过程中,容易陷入一个致命误区——对盘手交易规则的频繁调整。这种看似“优化策略”的举动,往往会让整个跟单体系陷入恶性循环,最终偏离盈利初衷。期货反向跟单的核心逻辑是&#xf…

Effective C++ 条款07:为多态基类声明virtual析构函数

Effective C 条款07:为多态基类声明virtual析构函数核心思想:当通过基类指针删除派生类对象时,如果基类没有虚析构函数,会导致派生类资源泄漏。因为此时只会调用基类的析构函数,而不会调用派生类的析构函数。 ⚠️ 1. …

C++进阶—C++11

第一章:C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性…

把振动数据转成音频并播放

把振动数据转声音并播放 1、实现流程 安装第三方库: pip install numpy==1.23.5 pip install scipy==1.10.1 pip install sounddevice==0.4.6流程: 1、导入振动数据 2、数据归一化到[-1, 1]范围 3、重采样到44.1kHz 4、播放音频 5、保存音频为WAV文件(可选)2、代码示例 …

ServBay 1.15.0 更新,拥抱 Bun Deno 新生态

历时一个月,ServBay迎来了1.15.0的更新。我们始终坚信,一个优秀的本地开发环境,不仅要稳定、高效,更要紧跟技术的演进脉搏。ServBay 的使命是为开发者扫清开发环境配置的障碍,让您能聚焦于创造本身。 本次ServBay 1.1…

Java设计模式-通俗举例

设计模式就像做菜的食谱,告诉我们遇到常见问题时该用什么"烹饪方法"。今天我就用最生活化的例子,带大家轻松掌握23种设计模式的精髓。一、创建型模式(5种):怎么"造东西"1. 单例模式:公…

【跟我学YOLO】YOLO12(3)训练自己的数据集

欢迎关注『跟我学 YOLO』系列 【跟我学YOLO】(1)YOLO12:以注意力为中心的物体检测 【跟我学YOLO】(2)YOLO12 环境配置与基本应用 【跟我学YOLO】(3)YOLO12 训练自己的数据集 【跟我学YOLO】&…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情分析实现

大家好,我是java1234_小锋老师,最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程,持续更新中,计划月底更新完,感谢支持。今天讲解微博舆情分析实现 视频在线地址&#xff1…

【C++】手搓一个STL风格的vector容器

TOC(手搓一个STL风格的vector容器) 手搓一个STL风格的vector容器 github地址 有梦想的电信狗 0. 前言:动态数组的工程实践 ​ 在C标准库中,vector容器作为最核心的序列式容器,其设计融合了动态数组的高效性与安全性。本文将通过完整实现…

24. 了解过 webp 吗

总结 一种图片格式 一、什么是 WebP? WebP(发音为 “weppy”)是由 Google 推出的一种现代图片格式,支持有损压缩和无损压缩,旨在提供更小的文件体积和更高质量的图像显示。 它兼容常见的图片功能,如&#…

【Unity笔记】Unity Camera.cullingMask 使用指南:Layer 精准控制、XR 多视图与性能提升

Unity Camera.cullingMask 使用指南:Layer 精准控制、XR 多视图与性能提升 关键词:Unity、Camera、Culling Mask、Layer 控制、XR 渲染分离、UI 显隐、性能优化 特别说明: 本文为近期项目所遇问题的总结,仅纯文字记录,…

携带参数的表单文件上传 axios, SpringBoot

页面上的表单如上图, 点击确定按钮需要把参数统一传给后端.前端代码:表单的提交方法const submit async () > {const formData new FormData();formData.append("bookName", bookForm.value.bookName);formData.append("author", bookForm.value.auth…

黑马JavaWeb【复习到哪更新到哪】

登录认证(复习Javaweb的登录校验) 登录功能 思路就是loginController->service层->mapper层,从数据库中查找username和password是否和前端用户提交的表单内容一致,一致就登录成功,否则就返回登录失败的信息。 登…

NVMe高速传输之摆脱XDMA设计21:PCIe请求模块设计(下)

在接收到请求总线接口的请求事务后,当请求类型的值为0时,表示通过PCIE硬核的配置管理接口发送请求,由于请求接口的接口和时序与配置管理接口基本一致,因此此时直接将请求接口信号驱动到配置管理接口完成请求的发送,请求…

机器学习sklearn:不纯度与决策树构建

不纯度与决策树构建不纯度概念:决策树通过不纯度指标来选择最佳分割节点和分枝方式不纯度衡量节点中样本类别的混杂程度不纯度越低,节点中样本类别越纯净,拟合效果越好常用不纯度指标:信息熵(Entropy):基于信息论的概念…

rk356x IR红外发射与接收之NEC协议

红外接收红外接收头解码器(红外信号解码,主要是NEC解码)红外发射器红外发光二极管晶振NEC编码组成共32位(4bit):由8位用户码1 8位用户码2 8位命令码 8位命令码反码有时会存在按键一直按下的一帧信息&…

C++算法之单调栈

C算法中的单调栈:从入门到实战指南 大家好!今天我们来聊聊C算法中一个超级实用的工具——单调栈。别被名字吓到,它其实很简单,就像排队买奶茶一样:队伍总是从矮到高(或从高到矮)排得整整齐齐&a…

React入门指南——指北指南(第二节)

React 实践:创建你的第一个待办事项列表 在前面的章节中,我们学习了 React 的核心概念(组件、Props、State 等)。本节将通过一个实际案例——创建待办事项列表(Todo List),帮助你巩固这些概念,并掌握 React 中处理用户交互、动态数据的基本方法。 案例目标 我们将构…