【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 的特点 分支…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
