您的位置:首页 > 运维架构 > Shell

Jmeter beanshell语法

2020-08-09 16:40 1061 查看

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脚本

后续再补~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: