【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 的特点 分支…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
