(一)BeanShell简介

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

BeanShell一般使用在逻辑比较复杂的地方

(二)Beanshell特点

  ·完整的java语法的动态执行,java代码片段,以及松散类型的java和其他脚本。

  ·透明地访问所有java对象和API

  ·运行在四种模式:命令行,控制台,小程序,远程会话服务器。

  ·可以在安全约束的环境中工作

  ·编译器是一个小于150K的jar文件

(三)BeanShell的六个种类

  定时器: BeanShell Timer

  前置处理器:BeanShell PreProcessor
  采样器: BeanShell Sampler
  后置处理器:BeanShell PostProcessor
  断言:  BeanShell断言
  监听器: BeanShell Listener

(四)Bean Shell常用内置变量

  log(Logger):打印日志信息,写入信息到jmeber.log文件,
    使用方法可参考:log.info("info")可参考:http://excalibur.apache.org/apidocs/org/apache/log/Logger.html

  ctx(JMeterContext):该变量引用了当前线程的上下文,
    使用方法可参考:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html

  vars(JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
    1).vars.get(String key):从jmeter中获得变量值
    2). vars.put(String key,String value):数据存到jmeter变量中
    使用方法可参考:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html

  props(JMeterProperties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值。
    1) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 
    2) props.put("PROP1","1234");

  prev(SampleResult):获取前面的sample返回的信息,常用方法:
    1) getResponseDataAsString():获取响应信息
    2) getResponseCode() :获取响应code
    使用方法可参考:http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html

  sampler(Sampler):gives access to the current sampler
      使用方法可参考:http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html

  threadName - String containing the current thread name

(五)BeanShell使用(以BeanShell PreProcessor为例)

1)运行自定义函数

2)调用外部Java文件,  source("D\\workspace\\TelephoneNumber.java")

3)导入自己打出的jar包,放到lib下的ext文件夹中,再导入类路径调用,如下图:

(六)其它用法:

1、在Test Plan中定义如下三个变量:

2、Bean Shell可脚本如下:

  a、bean shell可以接受传入参数,如下图:${u1} ${u2} ${u3}

  b、参数可以通过bsh.args[]按顺序提取

  c、bean shell提供了一个内置变量Parameters,来保存参数的集合

(以上把变量存入参数中的方式可以这样写:vars.put("ABCEEFG","${sid}");  结果:ABCEEFG=70695742 )

jmeter编写beanshell及内置方法的使用的更多相关文章

  1. JMeter之BeanShell常用内置对象

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  2. 用JAVA编写浏览器内核之实现javascript的document对象与内置方法

    原创文章.转载请注明. 阅读本文之前,您须要对浏览器怎样载入javascript有一定了解. 当然,对java与javascript本身也须要了解. 本文首先介绍浏览器载入并执行javascript的 ...

  3. Python的内置方法

    一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...

  4. python-day4装饰器、生成器、迭代器、内置方法、序列化、软件目录

    @生成器generator a=(i*2 for i in range(10)) a.__next__()#等同于next(a),基本都不用,多用for循环a.send(m)#将m传为yield的值 ...

  5. Python之路(第二十九篇) 面向对象进阶:内置方法补充、异常处理

    一.__new__方法 __init__()是初始化方法,__new__()方法是构造方法,创建一个新的对象 实例化对象的时候,调用__init__()初始化之前,先调用了__new__()方法 __ ...

  6. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法

    知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...

  7. python第四周:装饰器、迭代器、内置方法、数据序列化

    1.装饰器 定义:本质是一个函数,(装饰其他函数)就是为其他函数添加附加功能 原则:不能修改被装饰函数的源代码,不能修改被装饰函数的调用方式 实现装饰器的知识储备: 函数即“变量”.每当定义一个函数时 ...

  8. wlile、 for循环和基本数据类型及内置方法

    while + else 1.while与else连用 当while没有被关键字break主动结束的情况下 正常结束循环体代码之后执行else的子代码 """ while ...

  9. python之数据类型的内置方法(str, list)

    目录 字符串的内置方法 移除首尾指定字符 字母大小写相关操作 判断字符串的开头或结尾是否是指定字符 字符串特殊的输出方法 拼接字符串 替换指定字符 判断是否是纯数字 查找指定字符对应的索引值 文本位置 ...

随机推荐

  1. 【CSAPP笔记】8. 汇编语言——数据存储

    下面介绍一些C语言中常见的特殊的数据存储方式,以及它们在汇编语言中是如何表示的. 数组 数组是一种将标量数据聚集成更大数据类型的方式.实现数组的方式其实十分简单,也非常容易翻译成机器代码.C语言的一个 ...

  2. B-tree&B+tree&数据库索引原理

    B-tree&B+tree:https://www.cnblogs.com/vianzhang/p/7922426.html 数据库索引原理:https://www.cnblogs.com/a ...

  3. JavaBean 与 EJB 的区别

    JavaBean在一般情况下指的是实体类,在大部分情况下和POJO是同义词,基本构成就是一些字段和与之对应的 setter.getter方法,如果一个JavaBean需要在不同的JVM的进程中进行传递 ...

  4. Internet History, Technology and Security (Week 9)

    Week 9 Security: Web Security We are now on the second to last week of the class and finishing up ou ...

  5. Scrum Meeting Beta - 8

    Scrum Meeting Beta - 8 NewTeam 2017/12/7 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了博文详情的存储Issue #150Pull ...

  6. [二十七]SpringBoot 之 Restful接口的跨域请求

    什么是跨域 简单的说即为浏览器限制访问A站点下的js代码对B站点下的url进行ajax请求.比如说,前端域名是www.abc.com,那么在当前环境中运行的js代码,出于安全考虑,访问www.xyz. ...

  7. 从商用到开源:15个维度,全面剖析DB2与MySQL数据库的差异

    随着MySQL数据库的应用越来越广泛,DB2向MySQL数据库的迁移需求也越来越多.进行数据库之间迁移的时候,首先遇到的并且也是最基本最重要的就是两种数据库数据类型之间的转换. 相关阅读: 从商用到开 ...

  8. 【bzoj3527】 Zjoi2014—力

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 (题目链接) 题意 $${F_i=\sum_{j<i} {\frac{q_iq_j}{( ...

  9. 【poj3016】 K-Monotonic

    http://poj.org/problem?id=3016 (题目链接) 题意 给出一个数列,将一个数${a_i}$更改为${b_i}$的代价为${|a_i-b_i|}$.求将数列改为不递减的最小代 ...

  10. EOJ 262 润清的烦恼

    ——题目出处zhoutb2333 题解: 3e6可以带一个log 又是下取整问题.但是分块会TLE. 这样考虑,我们把式子拆成两个部分. 我们先算出来每一个x的[ai/x]项,再算出来[x/ai]项. ...