AI智能
改变未来

Jmeter beanshell语法


beanshell介绍

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

Beanshell常用的内置对象

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下

  • 全部类及其使用:https://jmeter.apache.org/api/allclasses-noframe.html

bsh.args对象获取数组参数

多个参数使用空格隔开,使用

bsh.args

可获取传入的数组参数,使用方法:

bsh.args[0]bsh.args[1]bsh.args[2]

Logger-log内置对象

org.apache.log.Logger:The object interacted with by client objects to perform logging.

log日志写入

写入信息到jmeber.log文件,使用方法:

log.info(\"info msg\");log.error(\"error msg\");log.warn(\"warning msg\");log.debug(\"debug msg\");

查看jmeter日志的方式

  • 在gui模式查看:
    选项

    ->

    日志查看

    或者点右上角的⚠️图标,即可在界面上查看jmeter日志;

  • 在未指定日志文件路径情况下,查看
    /apache-jmeter-5.3/bin

    目录下的

    jmeter.log

    文件

JMeterVariables-vars内置对象

org.apache.jmeter.threads.JMeterVariables:Class which defines JMeter variables. These are similar to properties, but they are local to a single thread.

操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

获取字符串变量值

vars.get(String key)

vars.get(\"domain\");			//获取字符串变量domain的值

设置字符串变量值到jmeter变量中

vars.put(String key,String value)

注意:value必须为String,传入其它类型的参数必须转成String,否则会报错。

int adultNum = 8;vars.put(\"adultNum\",adultNum.toString());			//将adultNum的转字符串设置为jmeter的adultNum变量值

获取非String类型变量值

vars.getObject(String key)

//personInfo为类型为Object对象的人信息vars.getObject(\"personInfo\");

设置非String类型变量值

vars.putObject(String key, Object value)

List list = new ArrayList();list.add(\"a\");list.add(\'b\');list.add(\"c\");vars.put(\"list\", list);			//将list对象放至到jmeter的list变量中

JMeterContext-ctx内置对象

org.apache.jmeter.threads.JMeterContext:Holds context for a thread. Generated by JMeterContextService. The class is not thread-safe – it is only intended for use within a single thread. 该变量引用了当前线程的上下文

获取响应数据 ctx.getPreviousResult()

//SampleResult需要import对象import org.apache.jmeter.samplers.SampleResult;SampleResult result = ctx.getPreviousResult();					//getPreviousResult()返回SampleResult对象String RequestHeaders = result.getRequestHeaders();			//getRequestHeaders()方法返回请求headers字符串String ResponseHeaders = result.getResponseHeaders();		//getResponseHeaders() 返回响应headers字符串String responseCode = result.getResponseCode();					//getResponseCode() 返回响应状态码字符串URL url = result.getURL();															//getURL() 返回请求URL对象

SampleResult-prev内置对象

org.apache.jmeter.samplers.SampleResult:This is a nice packaging for the various information returned from taking a sample of an entry.获取前面的sample返回的信息

prev相当于ctx.getPreviousResult()

String ResponseData = prev.getResponseDataAsString();			//getResponseDataAsString()返回响应文本String RequestHeaders = prev.getRequestHeaders();			//getRequestHeaders()方法返回请求headers字符串String ResponseHeaders = prev.getResponseHeaders();		//getResponseHeaders() 返回响应headers字符串String responseCode = prev.getResponseCode();					//getResponseCode() 返回响应状态码字符串URL url = prev.getURL();															//getURL() 返回请求URL对象String urlStr = prev.getUrlAsString();								//getUrlAsString() 返回请求URL字符串

常用beanshell脚本

后续再补~

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Jmeter beanshell语法