本博客免费发布Selenium、Appium、RobotFramework自动化测试,Loadrunner、JMeter性能测试,接口测试等测试技术文章,欢迎大家持续关注,如遇到问题可留言或关注下方的微信公众号,或加入我们的QQ群,来这里分享经验、交流技术、结交朋友、拓展视野、一起奋斗!

 

 一、什么是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对象获取数组参数

 

 

(2)vars内置对象的使用

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

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

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

 

(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());


 

 

(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

posted on 2018-10-10 17:05  慕城南风  阅读(889)  评论(0编辑  收藏  举报

本博客免费发布Selenium、Appium、RobotFramework自动化测试,Loadrunner、JMeter性能测试,接口测试等测试技术文章,欢迎大家持续关注,如遇到问题可留言或关注左侧的微信公众号,或加入我们的QQ群,来这里分享经验、交流技术、结交朋友、拓展视野、一起奋斗!