【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
- 作用:用于日志记录
- 示例:

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()
- 作用:获取线程当前的迭代号
- 示例:

3.2.2.3、put()
方法声明:public void put(String key, String value)
作用:创建或更新字符串变量
3.2.2.4、get()
方法声明:public String get(String key)
作用:获取变量的值并将其转换为字符串,若变量存在则将值转换为字符串,否则返回null
示例:




3.2.2.5、getObject()
方法声明:public Object getObject(String key)
作用:获取对象
3.2.2.6、putObject()
方法声明:public void putObject(String key,Object value)
作用:创建或更新一个对象
示例:

3.2.2.7、remove()
方法声明:public Object remove(String key)
作用:删除变量,并该变量值,若变量不存在则返回null

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:

- 示例2:使用vars,由于vars不能跨线程组,在线程组1中put的值,在线程组2中无法get到:



- 示例3:使用props,props可以跨线程组使用,线程组1中put的值,在线程组2中可以使用:



3.2.3.3、getProperty()
- 方法声明:
- public String getProperty(String key)
- public String getProperty(String key, String defaultValue):当key不存在则返回默认值
- 功能:返回属性值
- 示例:


3.2.3.4、setProperty()
- 方法声明:public Object setProperty(String key,String value)
- 功能:返回属性值
- 示例:


3.2.3.5、remove()
- 方法声明:public synchronized V remove(Object key)
- 作用:删除一个变量并返回变量值,若变量不存在则返回null
- 示例:

3.2.4、prev
- 提供对当前取样器结果的访问能力,映射org.apache.jmeter.samplers的SampleResult类。
3.2.4.1、getThreadName()
方法声明:public String getThreadName()
功能:获取线程名,同vars.getThreadName()
示例:

3.2.4.2、getTime()
- 方法声明:public long getTime()
- 作用:获取取样时间
- 示例:


3.2.4.3、getResponseCode()
- 方法声明:public String getResponseCode()
- 作用:获取响应状态码
- 示例:

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
- 示例:

3.2.4.7、getResponseMessage()
- 方法声明:public String getResponseMessage()
- 作用:获取Response message
- 示例:


3.2.4.8、getSampleLabel()
- 方法声明:public String getSampleLabel()
- 作用:获取取样器标签
- 示例:

3.2.4.9、getSampleLabel()
- 方法声明:
- public String getSampleLabel()
- public String getSampleLabel(boolean includeGroup):是否包含线程组名
- 作用:获取取样器标签
- 示例:

3.2.4.10、getResponseDataAsString()
- 方法声明:public String getResponseDataAsString()
- 作用:以字符串形式获取响应报文
- 示例:

3.2.4.11、getDataEncodingWithDefault()
- 方法声明:public String getDataEncodingWithDefault()
- 作用:返回编码方式
3.2.4.12、setDataEncoding()
- 方法声明:public void setDataEncoding(String dataEncoding)
- 作用:设置编码方式,用于解决响应乱码
- 示例:


3.2.4.13、getRequestHeaders()
- 方法声明:public String getRequestHeaders()
- 作用:获取请求头
3.2.4.14、getResponseHeaders()
- 方法声明:public String getResponseHeaders()
- 作用:获取响应头
- 示例:



3.2.4.15、getContentType()
- 方法声明:public String getContentType()
- 作用:获取响应头Content-Type字段
- 示例:


3.2.4.16、getStartTime()
- 方法声明:public String getContentType()
- 作用:获取请求开始时间戳
3.2.4.17、getEndTime()
- 方法声明:public String getContentType()
- 作用:获取请求结束时间戳
- 示例:


3.2.4.18、getUrlAsString()
- 方法声明:public String getContentType()
- 作用:获取 URL 的 String 表示形式

3.2.5、ctx
- ctx变量是JMeterContext类的一个实例,该变量使用较少,一般需要的功能在其他内置变量里都有提供,以下示例中均使用该全局变量:

3.2.5.1、getVariables()
- 方法声明:public JMeterVariables getVariables()
- 作用:提供对当前线程的 JMeter 变量的访问。
- 示例:

3.2.5.2、getProperties()
- 方法声明:public Properties getProperties()
- 作用:获取属性
- 示例:


3.2.5.3、getPreviousResult()
- 方法声明:public SampleResult getPreviousResult()
- 作用:获取前一个取样器的结果,相当于prev
- 示例:

3.2.5.4、getCurrentSampler()
- 方法声明:public Sampler getCurrentSampler()
- 作用:获取当前取样器对象
- 示例:

3.2.5.5、getPreviousSampler()
- 方法声明:public Sampler getPreviousSampler()
- 作用:获取前一个取样器对象
- 示例:

3.2.5.6、getThreadNum()
- 方法声明:public int getThreadNum()
- 作用:获取当前线程号,从0开始编号
- 示例:

3.2.5.7、getThread()
- 方法声明:public JMeterThread getThread()
- 作用:获取线程对象
- 示例:

3.2.5.8、getThreadGroup()
- 方法声明:public AbstractThreadGroup getThreadGroup()
- 作用:获取线程组对象
- 示例:

3.2.6、SamplerData
- 请求数据,类型为byte []

3.2.7、Label&SampleLabel
- 类型为String
- 示例:

3.2.8、ResponseData
- 响应数据,类型为byte []
- 示例:

3.2.9、ResponseCode&ResponseMessage
- 类型为String
- 示例:

3.2.10、IsSuccess
- 表示sampler的成功或失败,类型为boolean
- 示例1:


- 示例2:


3.2.11、Failure和FailureMessage
- Failure和FailureMessage是BeanShell Assertion组件独有的内置变量,作用是设置当前sampler的测试结果(成功或失败),Failure的类型是boolean,FailureMessage的类型是String。
- 示例:


3.2.12、Response
- 可以使用SampleResult类的方法
- 示例:

相关文章:
【Jmeter】Jmeter基础9-BeanShell介绍
3、BeanShell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法。 3.1、Jmeter中使用的BeanShell 在Jmeter中,除了配置元件,其他类型的元件中都有BeanShell。BeanShell 是一种完全符合Java语法规范的脚本语言,并且又拥…...
详解数组的轮转
𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…...
html 表格 笔记
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第二个页面</title><meta name"language" content"cn"> </head> <body><h2 sytle"width:500px;…...
计算机网络【HTTP 面试题】
HTTP的请求报文结构和响应报文结构 HTTP请求报文主要由请求行、请求头、空行、请求正文(Get请求没有请求正文)4部分组成。 1、请求行 由三部分组成,分别为:请求方法、URL以及协议版本,之间由空格分隔;请…...
linux基于用户身份对资源访问进行控制的解析及过程
linux中用户分为三类 1.超级用户(root) 拥有至高无上的权限 2.普通用户 人为创建、权限小,权限受到控制 3.程序用户 运行程序的用户,不是给人使用的,给程序使用的,一般不给登录! 组账…...
手动创建idea SpringBoot 项目
步骤一: 步骤二: 选择Spring initializer -> Project SDK 选择自己的JDK版本 ->Next 步骤三: Maven POM ->Next 步骤四: 根据JDK版本选择Spring Boot版本 11版本及以上JDK建议选用3.2版本,JDK为11版本…...
【Go语言入门:Go语言的数据结构】
文章目录 3.Go语言的数据结构:3.1. 指针3.2. struct(结构体)3.3. Map(映射,哈希) 3.Go语言的数据结构: 简介: 在Go语言中,数据结构体可以分为四种类型:基础类型、聚合类型、引用类型…...
QT designer的ui文件转py文件之后,实现pycharm中运行以方便修改逻辑,即添加实时模板框架
为PyCharm中的实时模板,你需要遵循以下步骤: 打开PyCharm的设置: 选择 File > Settings(在macOS上是 PyCharm > Preferences)。 导航到实时模板: 在设置中找到 Editor > Live Templates。 添加新的模板组 (可选): 为了…...
什么是负载均衡?
负载均衡是指在计算机网络领域中,将客户端请求分配到多台服务器上以实现带宽资源共享、优化资源利用率和提高系统性能的技术。负载均衡可以帮助小云有效解决单个服务器容量不足或性能瓶颈的问题,小云通过平衡流量负载,使得多台服务器能够共同…...
Python和Java的优缺点
Python的优点: 简单易学:Python的语法简洁清晰,易于学习和理解。丰富的库和框架:Python拥有庞大的标准库和活跃的开源社区,可以快速使用各种功能强大的库和框架,比如NumPy、Pandas、Django等。可读性强&am…...
AES - 在tiny-AES-c基础上封装了2个应用函数(加密/解密)
文章目录 AES - 在tiny-AES-c基础上封装了2个应用函数(加密/解密)概述增加2个封装函数的AES库aes.haes.c在官方测试程序上改的测试程序(用来测试这2个封装函数)END AES - 在tiny-AES-c基础上封装了2个应用函数(加密/解密) 概述 在github山有个星数很高的AES的C库 tiny-AES-c …...
51和32单片机读取FSR薄膜压力传感器压力变化
文章目录 简介线性电压转换模块51单片机读取DO接线方式51代码实验效果 32单片机读取AO接线方式32代码实验效果 总结 简介 FSR薄膜压力传感器是可以将压力变化转换为电阻变化的一种传感器,单片机可以读取然后作为粗略测量压力(仅提供压力变化,…...
【maven】pom.xml 文件详解
有关 maven 其他配置讲解参考 maven 配置文件 setting.xml 详解 pom.xml 文件是 Maven 项目的核心配置文件,其中包含了项目的元数据、构建配置、依赖管理等信息。以下是一个 pom.xml 文件的主要部分: <?xml version"1.0" encoding"U…...
SpringMVC源码解析——DispatcherServlet初始化
在Spring中,ContextLoaderListener只是辅助功能,用于创建WebApplicationContext类型的实例,而真正的逻辑实现其实是在DispatcherServlet中进行的,DispatcherServlet是实现Servlet接口的实现类。Servlet是一个JAVA编写的程序&#…...
搞定Apache Superset
踩雷了无数次终于解决了Superset的一系列问题 现在是北京时间2023年12月27日,亲测有效。 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎ÿ…...
【每日试题】java面试之ssm框架
以下是20道常见的SSM(SpringSpring MVCMyBatis)面试题目和答案: 什么是SSM框架? SSM是指SpringSpring MVCMyBatis的组合,它是Java Web开发中常用的轻量级框架集合。 介绍一下SSM框架各个组件的作用? Sprin…...
Flutter 疑难杂症集合
一. Flutter集成uni小程序sdk 1. 手机连接电脑测试打开uni小程序没问题,打包成apk后debug编译下的apk也没问题,但就是release编译的apk包打不开小程序。 报错情景:点击后页面会闪现一下黑色的背景,然后又跳转回了点击之前的页面。…...
PHP序列化总结1--序列化和反序列化的基础知识
序列化和反序列化的作用 1.序列化:将对象转化成数组或者字符串的形式 2.反序列化:将数组或字符串的形式转化为对象 为什么要进行序列化 这种数据形式中间会有很多空格,不同人有不同的书写情况,可能还会出现换行的情况 为此为了…...
【Linux】 last 命令使用
last 命令 用于检索和展示系统中用户的登录信息。它从/var/log/wtmp文件中读取记录,并将登录信息按时间顺序列出。 著者 Miquel van Smoorenburg 语法 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...]last 命令 -Linux手册页 选项及作用…...
Git 分布式版本控制系统(序章1)
第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git,同时,也方便管理自己的Qt项目。 一、Git 客户端下载(Windows) 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
