JMeter笔记十四:BeanShell取样器

Beanshell在jmeter中有着广泛的应用,这里简单了解下BeanShell。

BeanShell简单介绍

1、BeanShell特点:

  • 是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
  • 是一种松散类型的脚本语言(这点和JS类似);
  • 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
  • 执行标准Java语句和表达式,另外包括一些脚本命令和语法。

2、JMeter常用Beanshell:

  • 前置处理器:Beanshell预处理程序
  • 采样器:Beanshell取样器
  • 后置处理器: Beanshell后置处理程序
  • 断言:Beanshell断言
3、Beanshell内置变量
内置变量:Beanshell脚本中不用定义,可以直接使用的变量。
常用的内置变量和方法如下:
  • log:写日志到控制台和jmeter.log,如log.info("×××");
  • vars:操作jmeter变量
    • vars.get("id");从jmeter中获取${id}变量的值
    • vars.put("name","test");将test保存到${name}变量中
  • prev:获取前面sampler返回的信息
    • getResponseDataAsString():获取响应信息
    • getResponseCode():获取响应code
  • Failure:是否失败,boolean类型
  • FailureMessage:失败日志,在断言失败时显示
 
使用方式

一、在Beanshell面板直接写脚本

下面我们通过一个简单的例子来了解下

1、通过配置元件“用户定义的变量”,添加两个变量,分别是aa=“aa”,bb="bb",如下图:

 2、添加Beanshell取样器,并写一个简单的小功能,实现将“hello,”+aa的值赋值给变量bb:

public  static void test(){
    String input;
    input=vars.get("aa");
    String output = "hello,"+input;
    vars.put("bb",output);
    }

test();

 3、在Beanshell之前和之后分别添加取样器,添加监听器-查看结果树,运行查看执行结果

 

二、引用外部java源文件

还是用上面的例子,简单了解下用java文件如何实现Beanshell

1、用ecplise编写java文件如下:

public class BeanshellMethod {
    public static String test(String input) {
        String output ="Hello,"+input;
        return output;
    }

}

2、编写Beanshell取样器脚本如下:

source("D:/software/apache-jmeter-5.1.1/bin/test_beanshell/BeanshellMethod.java");  //java文件地址

String input=vars.get("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);

3、运行结果如下:

 

三、应用class文件

1、再上一个例子的基础上,进入java文件所在目录,执行javac xxx.java,生成xxx.class文件如下图:

 2、编写Beanshell取样器脚本如下:

addClassPath("D:/software/apache-jmeter-5.1.1/bin/test_beanshell");  //指定class文件路径

import BeanshellMethod;   //导入BeanshellMethod方法

String input=vars.get("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);

3、运行结果如下:

 

四、调用jar包

1、继续使用第一个例子,进入ecplise,将java文件导出jar包,并将导出的jar包放置到D:\software\apache-jmeter-5.1.1\lib\ext路径下。这里需要注意下的是,需要重启下jmeter。

 2、编写beanshell脚本如下:

import BeanshellMethod;     //

String input=vars.get("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);

3、运行结果如下:

posted @ 2020-06-07 18:19  阳光倾林  阅读(6563)  评论(0编辑  收藏  举报