【Jmeter】Jmeter基础9-BeanShell介绍

3、BeanShell

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法。

3.1、Jmeter中使用的BeanShell

  • 在Jmeter中,除了配置元件,其他类型的元件中都有BeanShell。BeanShell 是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法。
  • Jmeter中包含如下BeanShell:
    • 定时器:BeanShell Timer
    • 前置处理器:BeanShell PreProcessor
    • 采样器:BeanShell 取样器
    • 后置处理器:BeanShell 后置处理程序
    • 断言:BeanShell断言
    • 监听器:BeanShell监听器

3.2、BeanShell 常用内置变量

3.2.1、log

  • 作用:用于日志记录
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第1张图片

3.2.2、vars

  • 对象介绍:vars对象是JMeterVariables类的一个实例,可以存储String或Object类型的数据,作用域是当前线程组,只有同一个线程组内的线程才能访问和修改同一个vars变量。如果不同的线程组需要共享数据,就不能使用vars变量。
3.2.2.1、getThreadName()
  • 方法声明:public String getThreadName()
  • 作用:获取当前运行线程名
3.2.2.2、getIteration()
  • 方法声明:public int getIteration()
  • 作用:获取线程当前的迭代号
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第2张图片
3.2.2.3、put()

方法声明:public void put(String key, String value)
作用:创建或更新字符串变量

3.2.2.4、get()

方法声明:public String get(String key)
作用:获取变量的值并将其转换为字符串,若变量存在则将值转换为字符串,否则返回null
示例:
【Jmeter】Jmeter基础9-BeanShell介绍_第3张图片【Jmeter】Jmeter基础9-BeanShell介绍_第4张图片【Jmeter】Jmeter基础9-BeanShell介绍_第5张图片【Jmeter】Jmeter基础9-BeanShell介绍_第6张图片

3.2.2.5、getObject()

方法声明:public Object getObject(String key)
作用:获取对象

3.2.2.6、putObject()

方法声明:public void putObject(String key,Object value)
作用:创建或更新一个对象
示例:
【Jmeter】Jmeter基础9-BeanShell介绍_第7张图片

3.2.2.7、remove()

方法声明:public Object remove(String key)
作用:删除变量,并该变量值,若变量不存在则返回null
【Jmeter】Jmeter基础9-BeanShell介绍_第8张图片

3.2.3、props

  • props映射java.util的Properties类。是一个Hashtable类型的对象,也可以存储String或Object类型的数据。所有的线程组都可以访问和修改同一个props变量。如果不同的线程组需要共享数据,就可以使用props变量。
  • vars是对变量进行读写操作, 而props主要是对属性进行读写操作
  • Jmeter的属性在文件jmeter.properties中定义
3.2.3.1、get()
  • 方法声明:public synchronized V get(Object key)
  • 功能:获取属性值
3.2.3.2、put()
  • 方法声明:public synchronized V put(Object key)
  • 功能:设置属性值
  • 示例1:
    【Jmeter】Jmeter基础9-BeanShell介绍_第9张图片
  • 示例2:使用vars,由于vars不能跨线程组,在线程组1中put的值,在线程组2中无法get到:
    【Jmeter】Jmeter基础9-BeanShell介绍_第10张图片【Jmeter】Jmeter基础9-BeanShell介绍_第11张图片【Jmeter】Jmeter基础9-BeanShell介绍_第12张图片
  • 示例3:使用props,props可以跨线程组使用,线程组1中put的值,在线程组2中可以使用:
    【Jmeter】Jmeter基础9-BeanShell介绍_第13张图片【Jmeter】Jmeter基础9-BeanShell介绍_第14张图片【Jmeter】Jmeter基础9-BeanShell介绍_第15张图片
3.2.3.3、getProperty()
  • 方法声明:
    • public String getProperty(String key)
    • public String getProperty(String key, String defaultValue):当key不存在则返回默认值
  • 功能:返回属性值
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第16张图片【Jmeter】Jmeter基础9-BeanShell介绍_第17张图片
3.2.3.4、setProperty()
  • 方法声明:public Object setProperty(String key,String value)
  • 功能:返回属性值
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第18张图片
    【Jmeter】Jmeter基础9-BeanShell介绍_第19张图片
3.2.3.5、remove()
  • 方法声明:public synchronized V remove(Object key)
  • 作用:删除一个变量并返回变量值,若变量不存在则返回null
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第20张图片

3.2.4、prev

  • 提供对当前取样器结果的访问能力,映射org.apache.jmeter.samplers的SampleResult类。
3.2.4.1、getThreadName()

方法声明:public String getThreadName()
功能:获取线程名,同vars.getThreadName()
示例:
【Jmeter】Jmeter基础9-BeanShell介绍_第21张图片

3.2.4.2、getTime()
  • 方法声明:public long getTime()
  • 作用:获取取样时间
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第22张图片【Jmeter】Jmeter基础9-BeanShell介绍_第23张图片
3.2.4.3、getResponseCode()
  • 方法声明:public String getResponseCode()
  • 作用:获取响应状态码
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第24张图片
3.2.4.4、setResponseCodeOK()
  • 方法声明:public String getResponseCode()
  • 作用:将响应码设置为200(即使真实返回不为200,也设置为200)
3.2.4.5、setResponseCode()
  • 方法声明:public void setResponseCode(String code)
  • 作用:将响应码设置为指定值
3.2.4.6、isResponseCodeOK()
  • 方法声明:public boolean isResponseCodeOK()
  • 作用:判断响应码是否为200,是则返回true,否则返回false
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第25张图片
3.2.4.7、getResponseMessage()
  • 方法声明:public String getResponseMessage()
  • 作用:获取Response message
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第26张图片【Jmeter】Jmeter基础9-BeanShell介绍_第27张图片
3.2.4.8、getSampleLabel()
  • 方法声明:public String getSampleLabel()
  • 作用:获取取样器标签
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第28张图片
3.2.4.9、getSampleLabel()
  • 方法声明:
    • public String getSampleLabel()
    • public String getSampleLabel(boolean includeGroup):是否包含线程组名
  • 作用:获取取样器标签
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第29张图片
3.2.4.10、getResponseDataAsString()
  • 方法声明:public String getResponseDataAsString()
  • 作用:以字符串形式获取响应报文
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第30张图片
3.2.4.11、getDataEncodingWithDefault()
  • 方法声明:public String getDataEncodingWithDefault()
  • 作用:返回编码方式
3.2.4.12、setDataEncoding()
  • 方法声明:public void setDataEncoding(String dataEncoding)
  • 作用:设置编码方式,用于解决响应乱码
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第31张图片【Jmeter】Jmeter基础9-BeanShell介绍_第32张图片
3.2.4.13、getRequestHeaders()
  • 方法声明:public String getRequestHeaders()
  • 作用:获取请求头
3.2.4.14、getResponseHeaders()
  • 方法声明:public String getResponseHeaders()
  • 作用:获取响应头
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第33张图片【Jmeter】Jmeter基础9-BeanShell介绍_第34张图片【Jmeter】Jmeter基础9-BeanShell介绍_第35张图片
3.2.4.15、getContentType()
  • 方法声明:public String getContentType()
  • 作用:获取响应头Content-Type字段
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第36张图片【Jmeter】Jmeter基础9-BeanShell介绍_第37张图片
3.2.4.16、getStartTime()
  • 方法声明:public String getContentType()
  • 作用:获取请求开始时间戳
3.2.4.17、getEndTime()
  • 方法声明:public String getContentType()
  • 作用:获取请求结束时间戳
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第38张图片【Jmeter】Jmeter基础9-BeanShell介绍_第39张图片
3.2.4.18、getUrlAsString()
  • 方法声明:public String getContentType()
  • 作用:获取 URL 的 String 表示形式
    【Jmeter】Jmeter基础9-BeanShell介绍_第40张图片

3.2.5、ctx

  • ctx变量是JMeterContext类的一个实例,该变量使用较少,一般需要的功能在其他内置变量里都有提供,以下示例中均使用该全局变量:
    【Jmeter】Jmeter基础9-BeanShell介绍_第41张图片
3.2.5.1、getVariables()
  • 方法声明:public JMeterVariables getVariables()
  • 作用:提供对当前线程的 JMeter 变量的访问。
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第42张图片
3.2.5.2、getProperties()
  • 方法声明:public Properties getProperties()
  • 作用:获取属性
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第43张图片【Jmeter】Jmeter基础9-BeanShell介绍_第44张图片
3.2.5.3、getPreviousResult()
  • 方法声明:public SampleResult getPreviousResult()
  • 作用:获取前一个取样器的结果,相当于prev
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第45张图片
3.2.5.4、getCurrentSampler()
  • 方法声明:public Sampler getCurrentSampler()
  • 作用:获取当前取样器对象
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第46张图片
3.2.5.5、getPreviousSampler()
  • 方法声明:public Sampler getPreviousSampler()
  • 作用:获取前一个取样器对象
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第47张图片
3.2.5.6、getThreadNum()
  • 方法声明:public int getThreadNum()
  • 作用:获取当前线程号,从0开始编号
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第48张图片
3.2.5.7、getThread()
  • 方法声明:public JMeterThread getThread()
  • 作用:获取线程对象
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第49张图片
3.2.5.8、getThreadGroup()
  • 方法声明:public AbstractThreadGroup getThreadGroup()
  • 作用:获取线程组对象
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第50张图片

3.2.6、SamplerData

  • 请求数据,类型为byte []
    【Jmeter】Jmeter基础9-BeanShell介绍_第51张图片

3.2.7、Label&SampleLabel

  • 类型为String
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第52张图片

3.2.8、ResponseData

  • 响应数据,类型为byte []
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第53张图片

3.2.9、ResponseCode&ResponseMessage

  • 类型为String
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第54张图片

3.2.10、IsSuccess

  • 表示sampler的成功或失败,类型为boolean
  • 示例1:
    【Jmeter】Jmeter基础9-BeanShell介绍_第55张图片【Jmeter】Jmeter基础9-BeanShell介绍_第56张图片
  • 示例2:
    【Jmeter】Jmeter基础9-BeanShell介绍_第57张图片
    【Jmeter】Jmeter基础9-BeanShell介绍_第58张图片

3.2.11、Failure和FailureMessage

  • Failure和FailureMessage是BeanShell Assertion组件独有的内置变量,作用是设置当前sampler的测试结果(成功或失败),Failure的类型是boolean,FailureMessage的类型是String。
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第59张图片【Jmeter】Jmeter基础9-BeanShell介绍_第60张图片

3.2.12、Response

  • 可以使用SampleResult类的方法
  • 示例:
    【Jmeter】Jmeter基础9-BeanShell介绍_第61张图片

你可能感兴趣的:(jmeter,java,开发语言)