Jmeter性能测试学习(五):Beanshell处理器(包含前置后置)

BeanShell是一种脚本语言,一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法,beanShell是一种松散类型的脚本语言(这点和JS类似)。jmeter中就有这个内嵌的脚本页面,支持我们动态更加灵活的处理数据。首先从在jmeter中常用的变量说起

一、beanshell常用内置变量

1.vars
这个变量是所有内置变量中最有用的,它的本事是Map,Map是用键值对形式来存取变量的,常用方法:

vars.put(String key,String value) //通过键值对来存变量
vars.get(String keys) //获取key为keys的变量值
vars.putObject(String key,new Object()) //通过键值对来存一个对象
vars.getObject(key) //获取key为keys的对象

2.prev
一般用于前置处理器中,获取前面sample返回的信息,常用方法:

prev.getResponseDataAsString() //获取前面sample的响应信息
prev.getResponseCode() //获取前面sample的响应code

3.log
看到log就知道是日志打印,常用方法:

log.info("要打印的信息")

日志查看在
在这里插入图片描述
勾选即可

二、搭建整个测试样本

这里我们使用之前说的那个电话号码的请求,如图搭建三个请求,请求一填好如下接口数据
在这里插入图片描述
该接口的返回数据为
在这里插入图片描述

三、Beanshell预处理器(BeanShell PreProcessor)

在jmeter的前置处理器元件中,一般用于提取前面样本的响应信息,来作对比或者可以使用,同时它也可以在执行请求之前添加一些用到的参数,数据等。提前处理请求参数,如:加密解密。
在请求2中添加一个
在这里插入图片描述
在处理器脚本中写上,主要是用调试取样器来看我们是否有获取到前面方法返回的响应信息和响应码

vars.put("result",prev.getResponseDataAsString());
vars.put("ReturnCode",prev.getResponseCode());
vars.get("result");
vars.get("ReturnCode");

在这里插入图片描述
执行测试,查看察看结果树
在这里插入图片描述
我们想让它打印的信息都打印出来了,不仅可以比对结果,还可以进行其它处理,具体根据业务逻辑来

四、Beanshell取样器(BeanShell Sampler)

同样,也是可以对数据进行一些处理,比如网上最常见的一个例子就是获取当前时间之后,用beanshell对时间进行处理,再在其它地方引用这个时间,比较灵活
在这里插入图片描述
然后添加如下脚本

import java.text.SimpleDateFormat;
import java.util.*;
 
String str1 = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String str2 = new SimpleDateFormat("HH:mm:ss.SSS").format(new Date());
String str3 = new SimpleDateFormat("HH:mm:ss").format(new Date());
vars.put("str0",str1+"T"+str3+".000"+"对时间进行了处理");
vars.get("str0");

在这里插入图片描述直接执行,查看结果:
在这里插入图片描述
这些数据同时也可以用到其它请求上,直接使用${var中的key}来调用

五、BeanShell 后置处理程序(BeanShell PostProcessor)

和前置处理器类似,只不过元件在后置处理器中,一般用于对响应数据处理,比如要把响应数据保存到本地或者一些其它用途。其实beanshell的元件都很类似,分为前置后置等之后对我们使用更加方便,也有很多相同用途,只是作用的地方不同。这个就不作具体介绍了,看了前面的后也能使用这个,会使用就能行,具体的代码和功能还是要根据业务逻辑来写。
另外beanshell上方都有一个参数传递,使用方法如下:
在这里插入图片描述
参数用空格分开,直接用bsh.arg[下标]获取
在这里插入图片描述

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter中的BeanShell后置处理器是一种强大的工具,用于在HTTP请求之后自动执行Java代码。它在请求之后执行,并且可以访问请求的响应数据,以及其他JMeter变量和属性。BeanShell后置处理器可以用于许多用例,例如解析响应数据并提取所需的值,验证响应数据是否符合预期,并根据结果执行其他操作等。 以下是使用BeanShell后置处理器的步骤: 1. 添加BeanShell后置处理器到HTTP请求中。 2. 在BeanShell后置处理器中编写Java代码来处理响应数据。 3. 通过JMeter变量或属性将处理后的数据发送到其他请求中。 4. 运行测试计划并查看结果。 下面是一个示例BeanShell后置处理器代码,该代码从响应中提取特定值并将其存储在JMeter变量中: ``` import org.apache.jmeter.extractor.*; import org.apache.jmeter.extractor.gui.*; String responseData = prev.getResponseDataAsString(); String extractedValue = responseData.substring(10, 20); vars.put("myVariable", extractedValue); ``` 该代码首先将响应数据作为字符串获取,然后从中提取10到20个字符的子字符串。最后,它将提取的值存储在名为“myVariable”的JMeter变量中,以便在后续请求中使用。 需要注意的是,BeanShell后置处理器的性能可能会受到影响,因为它会在每个HTTP请求之后执行Java代码。对于大型测试计划,这可能会导致性能瓶颈。因此,在使用BeanShell后置处理器时,请确保仅编写必要的代码,并尽可能优化代码以提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值