一、什么是BeanShell

BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型、命令、闭包等通用脚本来对其进行拓展。BeanShell不仅仅可以通过运行其内部的脚本来处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码。因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果。

二、BeanShell PreProcessor的作用

1、介绍    
      BeanShell PreProcessor是一个前置处理器,它可以进行一些处理,比如执行一个算法并将结果存储到参数中。
通过BeanShell PreProcessor可以在发生采样之前执行任何代码。

右击项目——》“添加”——》“前置处理器”——》“BeanShell PreProcessor”

添加后,页面如下图:

4、Bean Shell常用内置变量

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

log:用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”);

ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext。

vars - (JMeterVariables):操作jmeter变量,提供读取/写入访问变量的方法。这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

    a) vars.get(String key):从jmeter中获得变量值

    b) vars.put(String key,String value):数据存到jmeter变量中

c) vars.putObject("OBJ1",new Object());

    更多方法可参考:org.apache.jmeter.threads.JMeterVariables

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

prev - (SampleResult):获取前面的sample采样的结果,常用方法:

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

    b) getResponseCode() :获取响应code

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

sampler - (Sampler):gives access to the current sampler 访问当前采样

实例:

配合counter, User Parameters

设置如下:

counter

User Parameters: 定义四个变量,初始值都为空,后期通过BeanShell PreProcessor与counter计算之后赋值

BeanShell PreProcessor  设置:

${cnt} ${v1}表示传入BeanShell Sampler的参数,也就是我们前面定义的Counter 和User Parameters,当然,如果需要传入多个参数,

一直写下去就可以,不需要标点隔开

结果:

最新文章

  1. VS代码提示不出现或者提示变成英文或者各种奇葩问题的解决
  2. CentOS 7使用nmcli配置双网卡聚合
  3. inline-boock的默认间距
  4. MYSQL 解锁与锁表
  5. ajax post提交的方式
  6. 帝吧出征FB:这李毅吧的“爆吧”文化是如何形成的
  7. Android使用AttributeSet自定义控件的方法
  8. 【UOJ Easy Round #2】
  9. NopCommerce Html扩展方法Html.Widget
  10. EF数据建模(一)
  11. [置顶] 关于CSDN2013博客之星的一些看法
  12. Hibernate JPA 中配置Ehcache二级缓存
  13. 【解题报告】Math
  14. tail命令
  15. faster-rcnn原理讲解
  16. Ubuntu18.04安装英伟达显卡驱动
  17. Codeforces Round #445 Div. 1
  18. Intellij中部署Tomcat(详细版本-介绍了部署完之后的详细路径)
  19. February 7th, 2018 Week 6th Wednesday
  20. python并发编程之IO模型 (四十九)

热门文章

  1. vb.net结构化异常处理和“邪用”
  2. IOS开发之新浪微博OAuth2
  3. Redis自学笔记 --string类型
  4. 使用Gnupg对Linux系统中的文件进行加密
  5. php5.2以下版本无json_decode函数的解决办法
  6. mybatis的statement的解析与加载(springboot)
  7. [CSS] Pseduo
  8. [Javascript] Prototype, hasOwnProperty(), valueOf() and toString() methods.
  9. nl命令(转)
  10. MySQL user表简介