beanshell


含义:BeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性。简单的理解:beanshell就是一个能写java代码的插件。

理解:
1.beanshell就是一个能写java代码的插件。类似postman中可以通过写js代码来断言,参数依赖,参数加密。在前置请求和tests

内置变量和方法:
vars 可以操作用户定义的变量
	获取变量:vars.get(变量名称)
	设置变量:vars.put(变量名称,变量值)
props 可以操作变量定义到jmeter的配置文件 也可以读取jmeter配置文件的变量
	从配置文件获取变量 props.get(变量名称)
	写入变量到配置文件:props.put(变量名称,变量值)		
log 日志 
	log.debug("调试信息")
	log.info("响应状态码" )
	log.warn("警告信息")
	log.error("出错信息")
  • 使用步骤
    1.在jmeter里新建一个测试计划
    2.新建一个线程组
    3.添加一个bean shell取样器-设置变量
    设置一个用户名admin的变量
vars.put("username","admin");
vars.put("password","admin123");
相当于给我们给这个线程组定义了一个username的变量,如果想看一下,添加一个查看结果数

4.增加一个调试取样器
在监听器里查看变量
5.增加一个查看结果数
6再添加一个取样器,获取变量

//声明是一个字符串类型的变量
String  username = vars.get("username");
String  password = vars.get("password");
//输出到日志
log.info(username);
log.info(password);

//设置一个变量,设置到了配置文件里了
props.put("str","helloword");

beanshell跨线程组通信案例

  • 操作步骤
    1.创建一个新的-线程组2
    2.测试计划-勾选上独立运行每个线程组
    这样运行完成第一个之后,运行第二个
    3.在线程组2中,添加取样器beanshell
    4.获取数据-只有props支持跨线程组

    //获取
    String str = props.get("str");
    log.info(str);
    

案例1

1.线程组用户likeshop前台登录
2.线程组使用token 完成添加商品到购物车操作
	*第一个线程组中取出参数:通过json提取器或者正则表达式提取并设置变量
	*读取上述变量并使用props将token存入到jmeter配置文件中
	*在第二个线程组中使用props取出变量 在使用vars设置为变量
	*在引用处使用${}引用即可
  • 操作步骤
    1.创建一个新的测试计划,勾选独立运行
    2.添加http-请求默认值,cooki管理器
    3.创建线程组1
    3.1创建http取样器
    3.1.1创建头信息(json数据类型)
    3.1.2json提取器,提取token
    3.3创建beanshell后置处理器,获取数据
    4.创建线程组2
    4.1创建http取样器
    4.2创建beanshell预处理程序
    4.3创建http信息头管理器,1.json头2.token数值引用
    5.查看结果集

在这里插入图片描述
1.创建一个新的测试计划,勾选独立运行
在这里插入图片描述
2.添加http-请求默认值,cooki管理器
3.创建线程组1
3.1创建http取样器
在这里插入图片描述
3.1.1创建头信息(json数据类型)
注意:前后千万不要有空格,有空格会报错
在这里插入图片描述
3.1.2json提取器,提取token
在这里插入图片描述

3.3创建beanshell后置处理器,获取数据

//获取token变量
String token = vars.get("token");


//设置到jmeter。pro文件中,通过props传递一下
props.put("token",token);

在这里插入图片描述
4.创建线程组2
4.1创建http取样器
在这里插入图片描述
4.2创建beanshell预处理程序

//获取token
String token = props.get("token");
//设置为变量
vars.put("token",token);

在这里插入图片描述

4.3创建http信息头管理器,1.json头2.token数值引用
在这里插入图片描述

5.查看结果集
在这里插入图片描述

beanshell处理原理

在这里插入图片描述

案例2

	完成对baotao注册功能接口的测试,要求:对密码进行加密之后在请求接口。
	*加密函数的jar包文件
	*测试计划中依赖上述jar文件 弄清楚加密函数调用的类的包名称和函数名称
	*在beanshell前置处理器中导包上述类
	*调用上述函数完成加密
	*vars设置加密之后的值为密码变量
	*在引用处使用${}引用即可
	
	使用随机函数中的digest 设置算法为MD5 也可以使用md5完成数据的加密。
  • 操作步骤
    1.测试计划里-先依赖加密的jar包
    2.创建线程组
    3.创建一个http默认请求值,cookie管理器
    4.添加一个http取样器-获取验证码
    5.给4添加一个json提取器-获取验证码
    6.添加取样器2-注册
    7.给6添加一个beanshell前置处理器

    //导包
    import com.utils.Toos;
    String password = "123456";
    //调用加密函数
    String md5Password = Tools.getMd5(password);
    //设置为变量
    vars.put("password",md5Password);
    //输入一下日志
    log.info(md5Password);
    

8.添加一个监听器-查看结果树
在这里插入图片描述

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值