【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 的特点 分支…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...