一、什么是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的使用方法和常用语法相关推荐

  1. C++中list的使用方法及常用list操作总结

    C++中list的使用方法及常用list操作总结 一.List定义: List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.使用时需要添加头文件 ...

  2. jmeter中beanshell的使用

    什么是beanshell? 其实可以理解为脚本语言,一般使用Java写的,是一种jar包形式的插件. jmeter目前有哪些? 定时器: BeanShell Timer 前置处理器:BeanShell ...

  3. jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景

    Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...

  4. jmeter 使用beanshell 编写脚本

    目录 一.介绍 1.1 介绍 1.2 下载&启动 二.jmeter中创建beanshell脚本 三.jmeter与beanshell 数据交互 3.1 例子1 beanshell 将变量传给j ...

  5. jmeter之beanshell sample使用

    一.操作变量 二.操作属性 三.自定义函数 四.引用外部java文件 五.引用外部class文件 六.引用外部Jar包 七.其它用法(接受参数, log等) 一.操作变量:通过使用Bean shell ...

  6. Jmeter接口测试中参数化的多种方法,你知道的有几种?欢迎评论留言。

    目录 前言: 一.用户定义变量 二.用户参数 三.user.properties文件 四.txt/csv 文件参数化 五.从数据库中获取 六.BeanShell参数化 前言: 在使用Jmeter做接口 ...

  7. Jmeter入门实战(二)如何使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比

    很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Beanshell断言可以比较灵活的实现这个需求. Beanshell是一种类似JAVA的 ...

  8. Jmeter之BeanShell

    在Jmeter中各种分类组件中都有相应的BeanShell组件,这里简单的说明一下Beanshell的使用. 一.概念 BeanShell是一种符合Java语法的脚本语言,也有自己的一些特定语法 二. ...

  9. 【JMeter】总结 jmeter 中各种函数

    本文内容总结了 JMeter 中的各种常用函数.复杂函数.对我比较有用的函数 等等. 但是,并没有包含全部函数. JMeter 提供了很多函数,可以很方便的实现一些小功能,几乎可以用于测试计划中的任何 ...

  10. 利用JMeter的beanshell进行接口的加密处理

    最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...

最新文章

  1. AI一分钟|特斯拉前员工爆料:部分汽车使用电池缺陷;小鹏汽车计划2019年底前融资300亿元...
  2. JAVA NIO 内存泄露
  3. 做自适应网站专业乐云seo_乐云分享新站SEO优化实践经验,收录和排名持续稳定上升方...
  4. conda Linux系统下的安装与使用
  5. Android Call requires API level 11 (current min is 8)的解决方案
  6. linux parrot 中文_parrot linux vi/vim命令
  7. illegal instruction问题窥探
  8. Nginx Location 工作流程图及总结
  9. unity通过脚本获取一个物体的所有子物体孙子物体.....并从里面找到有动画的物体
  10. Android Studio新建项目
  11. vscode利用ssh远程连接linux虚拟机
  12. PHP强大自适应OA协同办公系统源码 含CRM客户管理系统+内部聊天工具
  13. java生成假数据工具类-基于Faker1.0.2
  14. PAT (Basic Level) Practice (中文)1044 火星数字 (20 分)(Java实现)
  15. 新能源汽车的电池寿命
  16. Android渐变遮罩
  17. Prometheus学习系列(四十)之报警模板参考
  18. Delphi ...开源!
  19. 传奇称号添加教程,传奇称号系统
  20. html在小的电脑屏幕字体缩小,网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~...

热门文章

  1. pdf.js、pdfobject.js实现pdf文件预览
  2. python处理葵花8 netCDF4(nc格式)数据
  3. 转发表(MAC表)、ARP表、路由表总结
  4. ResNet网络结构解析--Pytorch
  5. oracle新建定时任务,创建 Oracle 定时任务
  6. 阿里云矢量图标使用方法
  7. pc机箱 图纸_如何升级到新的PC机箱
  8. 在Android Studio创建第一个Android项目
  9. 第十八篇 难点突破之-VUE中使用 C-LODOP 实现模板的套打
  10. C语言自己编写头文件