一.什么是BeanShell
- BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
- BeanShell是一种松散类型的脚本语言(这点和JS类似);
- BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
- BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。
二.好处
不用先编译,直接运行源代码就可以。
三.在JMeter中的作用
-
定时器: BeanShell Timer
-
前置处理器:BeanShell PreProcessor
-
采样器: BeanShell Sampler
-
后置处理器:BeanShell PostProcessor(提起参数、参数格式化)
-
断言: BeanShell断言
-
监听器: BeanShell Listener
四.语法
1.log:写入信息到jmeber.log文件,可以设置打印级别,可以打印字符串、变量等
log.info(“This is log info!”);
log.error("这是错误日志信息");
例子:
if(code.equals("200"))
{log.info(“reaponse is” + response);}
else
{log.error(“reaponse is” + response);}
2.prev - (SampleResult):获取前面的sample返回的信息
//获取响应信息
prev.getResponseDataAsString();
//获取响应code
prev.getResponseCode() ;
//请求头部信息
prev.getRequestHeaders() ;
prev.getCintentType() ;
3.ctx:该变量引用了当前线程的上下文
4.vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁
vars.get(String key):从jmeter中获得变量值
vars.put(String key,String value):数据存到jmeter变量中
5.props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
props.put("PROP1","1234");
6.sampler - (Sampler):gives access to the current sampler