JMeter的.BeanShell PostProcessor

zeu*_*atr 19 jmeter beanshell

我在jmeter中经历了bean shell脚本,但是我没有找到任何这样的例子,它在jmeter中是如何有用的,以及哪种方式.读取采样器值等等.任何人都可以用例子解释Jmeter中的bean shell脚本.我们编写脚本的beanshell post/pre processor脚本.我正在努力解决这个问题的实际用途.请解释一下.对我或其他人来说,理解它的用法对我有很大的帮助.

Dmi*_*i T 42

如果您查看Beanshell Post Processor的"脚本"部分,您将看到以下内容:

Script(variables: ctx, vars, props, prev, data, log)
Run Code Online (Sandbox Code Playgroud)
  • ctx - 代表JMeterContext,提供对JMeter Context API的访问(有关详细信息,请参阅JavaDoc).用法示例:

    int threadNum = ctx.getThreadNum(); // get current thread number 
    
    Run Code Online (Sandbox Code Playgroud)
  • vars - 代表JMeterVariables.使用vars您可以获取/设置变量值.

    String myvar = vars.get("myvar"); // get ${myvar} variable value and store it to myvar string 
    myvar = myvar + "something"; // append "something" to myvar
    vars.put("myvar", myvar); // put new value into ${myvar} variable
    
    Run Code Online (Sandbox Code Playgroud)
  • props - 代表JMeter Properties.基本上与变量相同,但变量可见性仅限于当前线程组,属性为"全局"

  • prev - 以前SampleResult的简写.似乎正是您正在寻找的.您可以获取/设置开始时间,结束时间,执行时间,延迟,URL,响应代码,响应消息等.有关综合信息,请参阅JavaDoc.用法示例:

    String code = prev.getResponseCode(); 
    String message = prev.getResponseMessage();
    
    Run Code Online (Sandbox Code Playgroud)
  • data - 包含父采样器响应数据的字节数组

    String samplerData = new String(data);
    System.out.println(samplerData);
    
    Run Code Online (Sandbox Code Playgroud)
  • log - 可用于将内容打印到jmeter.log文件

    log.info("This line has been written by Beanshell Post Processor");
    
    Run Code Online (Sandbox Code Playgroud)

有关更多详细信息和实际示例,请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南.


Nid*_*esh 5

如果你想在请求之间进行计算,Beanshell将帮助你在jmeter中实现。我们有 Beanshell 采样器Beashell 预处理器Beanshell 后处理器。例如,创建一个线程组并添加一个 beanshell 采样器,如图所示。在脚本下输入

var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);
Run Code Online (Sandbox Code Playgroud)

并在启用日志查看器的情况下运行(选项菜单>日志查看器)。

在此输入图像描述

您可以使用 beanshell 脚本调用 jar 的 java 方法(应位于 jmeter_folder/lib/ext 中)。

Beashell 预处理器用于执行计算并随请求一起发送值。假设您想在发送之前对用户名和密码进行加密。您可以提供凭据,使用 beanshell/java 方法对其进行加密,并将其设置为 beanshell 脚本 ( vars.put("variablename",variablevalue)) 中的变量。您可以将变量添加为请求http://test.com?parameter=${variablename}

类似地,Beashell 后处理器用于处理响应。假设您想要从响应中解密一个值,提取该值(使用正则表达式提取器)并使用 beanshell 脚本解密。