beanshell介绍

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
  • BeanShell是一种松散类型的脚本语言(这点和JS类似);
  • BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
  • BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。
  • github地址

Beanshell常用的内置对象

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

  • 全部类及其使用:https://jmeter.apache.org/api/allclasses-noframe.html

bsh.args对象获取数组参数

多个参数使用空格隔开,使用bsh.args可获取传入的数组参数,使用方法:

bsh.args[0]
bsh.args[1]
bsh.args[2]

Logger-log内置对象

org.apache.log.Logger:The object interacted with by client objects to perform logging.

log日志写入

写入信息到jmeber.log文件,使用方法:

log.info("info msg");
log.error("error msg");
log.warn("warning msg");
log.debug("debug msg");

查看jmeter日志的方式

  • 在gui模式查看:选项->日志查看或者点右上角的⚠️图标,即可在界面上查看jmeter日志;
  • 在未指定日志文件路径情况下,查看/apache-jmeter-5.3/bin目录下的jmeter.log文件

JMeterVariables-vars内置对象

org.apache.jmeter.threads.JMeterVariables:Class which defines JMeter variables. These are similar to properties, but they are local to a single thread.

操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

获取字符串变量值 vars.get(String key)

vars.get("domain");            //获取字符串变量domain的值

设置字符串变量值到jmeter变量中 vars.put(String key,String value)

注意:value必须为String,传入其它类型的参数必须转成String,否则会报错。

int adultNum = 8;
vars.put("adultNum",adultNum.toString());         //将adultNum的转字符串设置为jmeter的adultNum变量值

获取非String类型变量值 vars.getObject(String key)

//personInfo为类型为Object对象的人信息
vars.getObject("personInfo");

设置非String类型变量值 vars.putObject(String key, Object value)

List list = new ArrayList();
list.add("a");
list.add('b');
list.add("c");
vars.put("list", list);           //将list对象放至到jmeter的list变量中

JMeterContext-ctx内置对象

org.apache.jmeter.threads.JMeterContext:Holds context for a thread. Generated by JMeterContextService. The class is not thread-safe - it is only intended for use within a single thread. 该变量引用了当前线程的上下文

获取响应数据 ctx.getPreviousResult()

//SampleResult需要import对象
import org.apache.jmeter.samplers.SampleResult;SampleResult result = ctx.getPreviousResult();                  //getPreviousResult()返回SampleResult对象
String RequestHeaders = result.getRequestHeaders();            //getRequestHeaders()方法返回请求headers字符串
String ResponseHeaders = result.getResponseHeaders();      //getResponseHeaders() 返回响应headers字符串
String responseCode = result.getResponseCode();                    //getResponseCode() 返回响应状态码字符串
URL url = result.getURL();                                                         //getURL() 返回请求URL对象

SampleResult-prev内置对象

org.apache.jmeter.samplers.SampleResult:This is a nice packaging for the various information returned from taking a sample of an entry.获取前面的sample返回的信息

prev相当于ctx.getPreviousResult()

String ResponseData = prev.getResponseDataAsString();           //getResponseDataAsString()返回响应文本
String RequestHeaders = prev.getRequestHeaders();          //getRequestHeaders()方法返回请求headers字符串
String ResponseHeaders = prev.getResponseHeaders();        //getResponseHeaders() 返回响应headers字符串
String responseCode = prev.getResponseCode();                  //getResponseCode() 返回响应状态码字符串
URL url = prev.getURL();                                                           //getURL() 返回请求URL对象
String urlStr = prev.getUrlAsString();                             //getUrlAsString() 返回请求URL字符串

常用beanshell脚本

后续再补~

Jmeter beanshell语法相关推荐

  1. jmeter——BeanShell 预处理程序

    jmeter--BeanShell 预处理程序 一.BeanShell 预处理程序描述和作用 二.BeanShell 预处理程序的使用 三.BeanShell 预处理程序的注意事项 四.BeanShe ...

  2. Jmeter BeanShell使用json.jar包处理Json数据

    1.环境准备 1)  Jmeter.JDK 2) 将json.jar包置于..\lib\下 json包下载地址:https://mvnrepository.com/ (国内的maven地址) 可以参考 ...

  3. JMeter BeanShell 实现接口签名验签及加解密

    在利用JMeter进行接口测试或者性能测试的时候,我们需要处理一些复杂的请求,比如对接口请求参数进行签名,加密,响应数据的验签及解密,以及接口公共参数的处理,此时就需要利用BeanShell脚本了,关 ...

  4. 【干货】JMeter BeanShell 应用

    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html 不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单 ...

  5. (jmeter内置可调用的变量)jmeter beanShell断言

    用户可以在jmeter- "beanShell断言"中自定义断言.自由灵活的用脚本实现自己的断言   beanShell断言接口介绍   在beanShell中直接可以调用的变量, ...

  6. Jmeter BeanShell采样器提取接口响应并传递(三)

    1.将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2.CSV 数据文件设置多个手机号 3.添加登录接口,${mobile}调用2种的 ...

  7. Jmeter BeanShell取样器操作变量(一)

    vars: 引用Jmeter线程的局部变量,将 局部变量 改为  全局变量 亦可达到引用全局变量的效果, 连通Jmeter 和 beanshell string user = vars.get(&qu ...

  8. Jmeter——BeanShell PreProcessor的用法

    一.什么是BeanShell BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命 ...

  9. JMeter BeanShell 应用

    不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成 场景2:测试Java接口,确又不想继承Abstra ...

最新文章

  1. 深度学习在阿里B2B电商推荐系统中的实践
  2. 第六回严重鄙视360安全卫士
  3. js从0开始构思表情插件
  4. Windows7 beta1 微软官方下载
  5. html ctf查找,Web CTF 解题思路总结—南京邮电大学攻防平台writeup
  6. 前端学习(2597):按钮控制操作
  7. java todo error_Java全局异常处理(TODO)
  8. neo4j call
  9. java判空null前后,关于java:引不要再使用null判空了
  10. MySQL环境变量的配置(详细教程)
  11. 联想小新v2000bigger安装黑苹果
  12. mysql超市管理系统怎么写_求php+mysql的小型超市管理系统
  13. php alt什么意思,img标签的alt作用是什么
  14. Android 长按Menu键的监听
  15. 因子分析——流程与实现stata
  16. 水有七德,几近于道!
  17. ExcelWriter 导出excel
  18. 模糊图片(动漫)转高清 (aardio GUI),优质图片处理软件
  19. 2021 年国产数据库名录和产品信息一览
  20. Clarifai的AI可检测图像和视频中的不合规内容

热门文章

  1. Docker(三)- 从镜像运行启动容器
  2. 《XML实用大全》一
  3. 一个人生活,如何摆脱孤独提升幸福感?
  4. java中的String、StringBuffer和StringBuilder的详细分析
  5. Xilinx基于PCIE的部分重配置实现(一)
  6. liunx oracle 12505,ORA-12505 错误解决
  7. IPv4和IPv6的相互转换
  8. uchar 和 uchar3的疑惑
  9. BLAST Database error: No alias or index file found for protein database
  10. 关于对皮亚诺公理的理解