【Jmeter】BeanShell脚本一些常用的内置变量的使用方法介绍

本文深入解析JMeter中BeanShell脚本处理器的各类组件,包括定时器、前置处理器、采样器、后置处理器、断言及监听器的功能与使用场景。同时,介绍了如何利用内置变量与JMeter进行交互,详细阐述vars和props变量的差异及应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用jmeter的时候,往往会遇到一些问题,比如需要获取某个api的返回,或者需要做一些前置处理,jmeter中一共有以下几类BeanShell脚本处理器

  • 定时器:  BeanShell Timer
  • 前置处理器:BeanShell PreProcessor
  • 采样器:  BeanShell Sampler
  • 后置处理器:BeanShell PostProcessor
  • 断言:   BeanShell断言
  • 监听器:  BeanShell Listener

jmeter中提供了几种常用的内置变量,我们利用这些变量可以和jmeter进行交互

- ctx

JMeterContext

获取一些上下文的信息

- vars

JMeterVariables
vars主要用于操作一些变量,可以读取变量的值,也可以设置一个变量,之后我们在jmeter中就可以使用 ${变量名称} 的方式访问这个变量,我截取了它的一些方法在这里插入图片描述
示例代码如下

vars.get("VAR1");
vars.put("VAR2","value");
vars.remove("VAR3");
vars.putObject("OBJ1",new Object());

- props

JMeterProperties (class java.util.Properties)

示例代码如下

props.get("START.HMS");
props.put("PROP1","1234");

- prev

SampleResult

截取了一部分方法在这里插入图片描述

示例代码

String body = prev.getResponseDataAsString();
log.info(body);

注意

vars和props都可以put一个变量出来,但是它们两个put出来的变量在使用的时候有些不同,vars设置的变量只能在本线程组内使用,而props设置的变量可以跨线程组使用,而且引用vars设置的变量的方法是 ${变量名称},而引用props设置的变量需要通过使用jmeter的内置函数 ${__P(PROP1,)

在这里插入图片描述
在这里插入图片描述
执行结果,可以看出,值都获取到了
在这里插入图片描述

在这里插入图片描述
执行结果,可以看出,只有props设置的变量获取到了,vars设置的变量没有获取到
在这里插入图片描述
可参考jmeter官方文档
BeanShell PreProcessor
BeanShell_PostProcessor

### 如何在 JMeter使用 BeanShell 脚本实现打印功能 #### 实现打印操作的方法JMeterBeanShell 脚本环境中,可以利用 `log` 对象来执行打印操作。这允许测试人员记录调试信息或重要的运行时数据到日志文件中[^1]。 下面是一个简单的例子展示如何向控制台输出消息以及将信息写入JMeter的日志文件: ```java // 向控制台输出字符串 "Hello, world!" System.out.println("Hello, world!"); // 将一条信息级别的日志条目添加至JMeter的日志文件里 log.info("This is an info message from the script"); // 记录警告级别日志 log.warn("A warning occurred during execution"); ``` 通过上述代码片段可以看到,在BeanShell脚本仅能够直接调用Java标准库中的`System.out.println()`函数来进行基本的屏幕输出;还可以借助于预定义好的`log`对象的方法(如`.info()`, `.warn()`)把同严重程度的消息发送给JMeter内部的日志系统[^2]。 对于更复杂的场景,比如想要打印出当前线程名称或是其他环境变量的内容,则可以通过访问特定的对象属性或者调用相应的API接口完成这样的需求。例如获取并显示当前正在执行采样器的名字: ```java String currentSamplerName = ctx.getCurrentSampler().getName(); log.info("Executing sampler named: "+currentSamplerName); ``` 这里展示了怎样运用`ctx`(代表上下文)这个全局可用的对象去取得有关当前被执行HTTP请求的信息,并将其作为日志的一部分保存下来[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值