Jmeter——BeanShell PreProcessor的用法
一、什么是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,当然,如果需要传入多个参数,
一直写下去就可以,不需要标点隔开
结果:
最新文章
- VS代码提示不出现或者提示变成英文或者各种奇葩问题的解决
- CentOS 7使用nmcli配置双网卡聚合
- inline-boock的默认间距
- MYSQL 解锁与锁表
- ajax post提交的方式
- 帝吧出征FB:这李毅吧的“爆吧”文化是如何形成的
- Android使用AttributeSet自定义控件的方法
- 【UOJ Easy Round #2】
- NopCommerce Html扩展方法Html.Widget
- EF数据建模(一)
- [置顶] 关于CSDN2013博客之星的一些看法
- Hibernate JPA 中配置Ehcache二级缓存
- 【解题报告】Math
- tail命令
- faster-rcnn原理讲解
- Ubuntu18.04安装英伟达显卡驱动
- Codeforces Round #445 Div. 1
- Intellij中部署Tomcat(详细版本-介绍了部署完之后的详细路径)
- February 7th, 2018 Week 6th Wednesday
- python并发编程之IO模型 (四十九)
热门文章
- vb.net结构化异常处理和“邪用”
- IOS开发之新浪微博OAuth2
- Redis自学笔记 --string类型
- 使用Gnupg对Linux系统中的文件进行加密
- php5.2以下版本无json_decode函数的解决办法
- mybatis的statement的解析与加载(springboot)
- [CSS] Pseduo
- [Javascript] Prototype, hasOwnProperty(), valueOf() and toString() methods.
- nl命令(转)
- MySQL user表简介