JMeter之BeanShell常用内置对象

摘要:
(1) Bsh.args对象获取数组参数(2)vars内置对象A:vars的使用。get(Stringkey)获取字符串变量vars。put(Stringkey,

 一、什么是Bean Shell

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

二、Jmeter有哪些Bean Shell

  • 定时器:  BeanShell Timer
  • 前置处理器:BeanShell PreProcessor
  • 采样器:  BeanShell Sampler
  • 后置处理器:BeanShell PostProcessor
  • 断言:   BeanShell断言
  • 监听器:  BeanShell Listener

 

三、Bean Shell常用内置变量

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

(1)bsh.args对象获取数组参数

 

JMeter之BeanShell常用内置对象第1张

 

(2)vars内置对象的使用

A:示例定义一个用户自定义变量

JMeter之BeanShell常用内置对象第2张

B:vars.get(String key)获取String变量 

   vars.put(String key,Value)放置一个Map到vars 

JMeter之BeanShell常用内置对象第3张

 

(3)vars内置对象put和get Object对象

如果需要获取或者放置非String类型数据 需要用putObject()和getObject()

 

 1 //Beanshell vars.putObject() vars.getObject()的使用
 2 List list = new ArrayList();
 3 
 4 list.add("aaa");
 5 list.add("bbb");
 6 //putObject()可以在vars对象中放置Object类型对象
 7 vars.putObject("list",list);
 8 //===========================
 9 //获取Object list对象
10 Object Value = vars.getObject("list");
11 //log.info只能输出String类型变量
12 log.info(Value.toString());


JMeter之BeanShell常用内置对象第4张 

 (4)Beanshell的常用内置对象-cxt

cxt内置对象getPreviousResult()方法 调用请求/响应数据

cxt内置对象来自于JMeterContext 查看Jmeter API发现有下列get方法可以获取请求/响应数据

 

 1 //SampleResult需要import对象
 2 import org.apache.jmeter.samplers.SampleResult;
 3 
 4 SampleResult result = ctx.getPreviousResult();
 5 //getRequestHeaders()方法返回String字符串
 6 String RequestHeaders = result.getRequestHeaders();
 7 //getResponseHeaders() 返回响应headers
 8 String ResponseHeaders = result.getResponseHeaders() 
 9 //getResponseCode() 返回响应状态码字符串
10 String responseCode = result.getResponseCode();
11 //getURL() 返回请求URL对象 
12 URL url = result.getURL();
13 log.info(RequestHeaders);
14 log.info(RequestHeaders);

 

(5)prev内置对象

prev是Beanshell后置处理器的内置对象 相当于ctx.getPreviousResult();

prev - (SampleResult):获取前面的sample返回的信息,常用方法:

a) getResponseDataAsString():获取响应信息

b) getResponseCode() :获取响应code

更多方法可参考:org.apache.jmeter.samplers.SampleResult

(5)props内置对象

props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 

a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 
b) props.put("PROP1","1234"); 

 

http://jmeter.apache.org/usermanual/component_reference.html#BeanShell_Sampler

http://jmeter.apache.org/usermanual/component_reference.html#BeanShell_PreProcessor

免责声明:文章转载自《JMeter之BeanShell常用内置对象》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.NET中应用Ueditor(富文本编辑)的配置和使用flex布局/弹性盒子下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 变量类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: typeidentifier[= value][, identifier[= value]...]; 格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。 以下列出了一些变量的声明实例。注意有些包含了初始化过程。 inta,...

Python线程指南(转)

1. 线程基础 1.1. 线程状态 线程有5种状态,状态转换的过程如下图所示: 1.2. 线程同步(锁) 多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程"print"负责从前往后读取列表并打印。那么,...

4.14Java游戏小项目之键盘控制原理

4.14Java游戏小项目之键盘控制原理本质理解 键盘和程序交互原理: 每次按下键、松开键触发响应的键盘事件。 按下和松开用true和false表示 将事件封装到KeyEvent对象中 识别按下哪个键就是对键盘进行编号 编号通过KeyEvent对象来查询 本项目有四个方向,设置四个基本方向,按下=true,松开=false,左右移动只需要对其进行加、...

【view绘制流程】理解

一、概述 View的绘制是从上往下一层层迭代下来的。DecorView-->ViewGroup(--->ViewGroup)-->View ,按照这个流程从上往下,依次measure(测量),layout(布局),draw(绘制)。 我们来对上图做出简单解释:DecorView是一个应用窗口的根容器,它本质上是一个FrameL...

Ubuntu 环境变量

环境变量配置文件 在Ubuntu中有如下几个文件可以设置环境变量 1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。 2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。 3、~...

处理 EF 并发其实就这么简单

    最近项目有点闲,终于可以了解点自己想了解的了,以前听同事讲面试的经历总会被问到“如何处理高并发大数据” 乍一听感觉这东西好像很有学问的样子,于是并发这个词在脑海里留深刻印像,而且在自己心中的技术地位也提高很多,也导致了解并发相关的知识时,也带着思想负担,总以为很难懂,程序员或许都是这样,在自己不懂的技术领域,别人说一个很简单的技术,给他的感觉都是很...