含义: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.添加一个监听器-查看结果树