JMeter中BeanShell的使用方法和常用语法
一、什么是BeanShell
BeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性。
二、JMeter中用BeanShell的好处
JMeter也是由java编写的,而java运行时需要先编译,然后才可以运行,而BeanShell是一款解释器,直接可能运行源代码;
三、BeanShell在JMeter的作用
(1)对JMeter的功能的扩展;
(2)对jmeter变量的一些操作;
四、JMeter中BeanShell常用的基本语法:
1、log:打印日志,写入信息到jmeber.log文件;
2、SampleResult:获取SampleResult对象,能通过这个对象获取想要的信息;
3、Response:获取Response对象,能通过这个对象获取响应信息;
4、Failure:查看接口调使用能否成功,假如返回false是成功的,true是失败的。
5、FailureMessage:失败信息,没有设置的时候失败信息是空的,能set这个信息。
6、ResponseData:获取response body类型是byte[]。
7、ResponseCode:返回接口code成功是200。
8、ResponseMessage:获取msg成功是OK。
9、ResponseHeaders:获取接口服务端返回的头部信息。
10、RequestHeaders:获取用户端请求的头部信息。
11、SampleLabel:获取接口请求的名称。
12、SamplerData:获取请求的url和body。
13、ctx 当前线程的上下文信息,能直接用
14、vars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:
(1) vars.get("String key"):从jmeter中获得变量值;
(2) vars.put("String key","String value"):将数据存到jmeter变量中;
15、prev 获取sample返回的信息,常用方法:
(1) getResponseDataAsString():获取响应信息。
(2) getResponseCode() :获取响应code。
五、Jmeter中包含的BeanShell类型
1、BeanShell前置处理器:BeanSell PreProcessor
2、BeanShell取样器:BeanSell Sampler
3、BeanShell后置处理器:BeanSell PostProcessor
4、BeanShell监听器:BeanSell Listener
5、BeanShell定时器:BeanSell Timer
6、BeanShell断言:BeanSell断言
BeanShell前置处理器、BeanShell取样器、BeanShell后置处理器,它们之间的区别:
1、BeanShell前置处理器、BeanShell后置处理器 比 BeanShell取样器多一个重置解释器(Reset Interpreter),意思是指:对于每一次处理是不是都要进行重置;
2、在JMeter中BeanShell取样器是当成线程处理的,所以运行时是有一定的消耗的,而使用BeanShell前置处理器、BeanShell后置处理器总体来说比BeanShell取样器消耗低,相当于少起一个线程。
六、JMeter中BeanShell使用
1、BeanSell取样器中直接编写代码
(1)提取下图中的https的链接地址
(2)首先用正则表达式提取器来提取值,这边的正则表达式可以只提取一个值,也就是只写了一个()
(3)在BeanShell取样器输入输入源码,注意:这边一定要写参数${ABCDEF},这个值依赖于正则表达式提取数据,并且在代码中一定要写str = bsh.args[0],表示获取数组参数,如果是取变量,用vars.get("String key")
public static void link(){
String IP;
String path;
String str;
str = bsh.args[0];
IP = str.substring(0,str.indexOf("/"));
path = str.substring(str.indexOf("/")+1);
vars.put("IP",IP);
vars.put("path",path);
}
link();
(4)Http2请求中服务器与路径的数据依赖于BeanShell取样器中所获取的IP、path的值
(5)运行后,在察看结果树中,可以看到获取到了IP与path的值
(6)察看结果树中显示Http2请求数据正确
2、引用外部的java源码
(1)java源码,右键--Properties,查看java源码的存放路径
public class BeanShell {
public static String[] beanShellMethod(String str){
String[] arr = new String[2];
//截取/前的字符串
arr[0] = str.substring(0,str.indexOf("/"));
//截取/后的字符串
arr[1] = str.substring(str.indexOf("/")+1);
return arr;
}
}
(2)BeanShell取样器中要引入java源码的存放路径,source("E:/jmeterMethod/BeanShell.java");
source("E:/jmeterMethod/BeanShell.java");
String str = bsh.args[0];
BeanShell method = new BeanShell();
String[] array = method.beanShellMethod(str);
for(int i=0;i<array.length-1;i++) {
String IP = array[i];
String path = array[i+1];
vars.put("IP",IP);
vars.put("path",path);
}
(3)Http2请求中服务器与路径的数据依赖于BeanShell取样器中所获取的IP、path的值
3、引入外部class文件
(1)DOS中将源码编译成class文件
(2)BeanShell取样器,引入class文件用addClassPath("相对路径或绝对路径"),还需用import导入,格式为: import 包名.类名,注意:包名一定要写上。
注意:addClassPath()是找指定的路径,source()是找指定的文件
addClassPath("F:\\java\\j\\p\\src");
import com.jyh.BeanShell;
String str = bsh.args[0];
BeanShell method = new BeanShell();
String[] array = method.beanShellMethod(str);
for(int i=0;i<array.length-1;i++) {
String IP = array[i];
String path = array[i+1];
vars.put("IP",IP);
vars.put("path",path);
}
(3)运行后,在察看结果树中,可以看到获取到了IP与path的值
4、引入外部jar包
(1)将jar包复制到jmeter\lib\ext路径下,这个lib\ext路径下存放引入外部的一些jar包
(2)BeanShell取样器,注意一定要用import导入包
import com.jyh.BeanShell;
String str = bsh.args[0];
BeanShell method = new BeanShell();
String[] array = method.beanShellMethod(str);
for(int i=0;i<array.length-1;i++) {
String IP = array[i];
String path = array[i+1];
vars.put("IP",IP);
vars.put("path",path);
}
(3)运行后,在察看结果树中,可以看到获取到了IP与path的值
JMeter中BeanShell的使用方法和常用语法相关推荐
- C++中list的使用方法及常用list操作总结
C++中list的使用方法及常用list操作总结 一.List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.使用时需要添加头文件 ...
- jmeter中beanshell的使用
什么是beanshell? 其实可以理解为脚本语言,一般使用Java写的,是一种jar包形式的插件. jmeter目前有哪些? 定时器: BeanShell Timer 前置处理器:BeanShell ...
- jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景
Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...
- jmeter 使用beanshell 编写脚本
目录 一.介绍 1.1 介绍 1.2 下载&启动 二.jmeter中创建beanshell脚本 三.jmeter与beanshell 数据交互 3.1 例子1 beanshell 将变量传给j ...
- jmeter之beanshell sample使用
一.操作变量 二.操作属性 三.自定义函数 四.引用外部java文件 五.引用外部class文件 六.引用外部Jar包 七.其它用法(接受参数, log等) 一.操作变量:通过使用Bean shell ...
- Jmeter接口测试中参数化的多种方法,你知道的有几种?欢迎评论留言。
目录 前言: 一.用户定义变量 二.用户参数 三.user.properties文件 四.txt/csv 文件参数化 五.从数据库中获取 六.BeanShell参数化 前言: 在使用Jmeter做接口 ...
- Jmeter入门实战(二)如何使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比
很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Beanshell断言可以比较灵活的实现这个需求. Beanshell是一种类似JAVA的 ...
- Jmeter之BeanShell
在Jmeter中各种分类组件中都有相应的BeanShell组件,这里简单的说明一下Beanshell的使用. 一.概念 BeanShell是一种符合Java语法的脚本语言,也有自己的一些特定语法 二. ...
- 【JMeter】总结 jmeter 中各种函数
本文内容总结了 JMeter 中的各种常用函数.复杂函数.对我比较有用的函数 等等. 但是,并没有包含全部函数. JMeter 提供了很多函数,可以很方便的实现一些小功能,几乎可以用于测试计划中的任何 ...
- 利用JMeter的beanshell进行接口的加密处理
最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...
最新文章
- AI一分钟|特斯拉前员工爆料:部分汽车使用电池缺陷;小鹏汽车计划2019年底前融资300亿元...
- JAVA NIO 内存泄露
- 做自适应网站专业乐云seo_乐云分享新站SEO优化实践经验,收录和排名持续稳定上升方...
- conda Linux系统下的安装与使用
- Android Call requires API level 11 (current min is 8)的解决方案
- linux parrot 中文_parrot linux vi/vim命令
- illegal instruction问题窥探
- Nginx Location 工作流程图及总结
- unity通过脚本获取一个物体的所有子物体孙子物体.....并从里面找到有动画的物体
- Android Studio新建项目
- vscode利用ssh远程连接linux虚拟机
- PHP强大自适应OA协同办公系统源码 含CRM客户管理系统+内部聊天工具
- java生成假数据工具类-基于Faker1.0.2
- PAT (Basic Level) Practice (中文)1044 火星数字 (20 分)(Java实现)
- 新能源汽车的电池寿命
- Android渐变遮罩
- Prometheus学习系列(四十)之报警模板参考
- Delphi ...开源!
- 传奇称号添加教程,传奇称号系统
- html在小的电脑屏幕字体缩小,网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~...