JMeter常用内置对象:vars、ctx、prev

article/2025/11/10 10:11:25

在前文 Beanshell Sampler 与 Beanshell 断言 中,初步阐述了JMeter beanshell的使用,接下来归集整理了JMeter beanshell 中常用的内置对象及其使用。

注:示例使用JMeter版本为5.1

1 vars

如 API 文档 所言,这是定义变量的类,而这些变量是单个线程的本地属性。听起来有些难理解,其实我们只要知道,这个类的一系列方法基本是在针对变量进行取值和赋值,而且这个取值和赋值行为只对当前线程的变量生效,而非全部线程。

在所有方法中,有两个方法值得重点关注,其他方法感兴趣的可以阅读文档做进一步了解。这两个方法就是 get() 和 put()。

String get(String key) 方法,顾名思义,是取值方法。其要素如下:

  • 参数:String key,即一个字符串格式的key,
  • 返回值:参数 key 对应的 value,前提是存在这个键值对,否则会返回null
  • 作用:从内存中通过 key 获取对应的 value

void put(String key, String value) 方法,则是赋值方法,其要素如下:

  • 参数:String key,即一个字符串格式的键,String value,则是字符串格式的值
  • 返回值:void,即没有返回值
  • 作用:将一对 key 和 value 以键值对格式存入内存

下面通过一个示例,体会一下这两个方法,先建立脚本结构如下:
在这里插入图片描述
【用户定义的变量】的作用是:向内存中存入一个变量,参数名为"name",参数值为 “mu”,类似{ “name” : “mu”} 这样一个键值对(仅为示例,JMeter并不是这么存储变量的)

接下来,在【BeanShell取样器】中写入代码:
在这里插入图片描述

  • vars.get(“name”):前面【用户定义的变量】中已经存储了 name 这个变量和其对应的值,这里我们便可以获取其值。
  • vars.put(“nameNew”,name + “gz”):将name 的值拼接"gz"后,赋值给变量nameNew,并存入内存。

运行脚本,察看结果树:
在这里插入图片描述

2 ctx和prev

更多信息请见:API文档

这个内置对象的类提供了很多方法,但在接口测试中常用的一个方法是 SampleResult getPreviousResult() ,其要素如下:

  • 参数:无
  • 返回值:SampleResult,即取样器结果
  • 作用:获取前一个取样器的结果

SampleResult类 【API文档】又提供了很多方法,以提供取样器结果的诸要素,例如:

  • String getRequestHeaders() :获取取样器结果的请求头
  • String getResponseCode():获取取样器结果的响应码
  • String getResponseHeaders() :获取取样器结果的响应头
  • String getResponseDataAsString():获取取样器结果的响应数据

其他方法请查阅API文档

下面以一个示例进行演示,首先创建下面的脚本:
在这里插入图片描述
在【beanShell取样器】中写入以下语句:

import org.apache.jmeter.samplers.SampleResult;// 获取取样器结果
SampleResult result = ctx.getPreviousResult();
// 获取请求头
String RequestHeaders = result.getRequestHeaders();
// 获取响应头
String ResponseHeaders = result.getResponseHeaders();
// 获取响应码
String responseCode = result.getResponseCode();
// 获取响应数据
String responseData = result.getResponseDataAsString();
// 获取url
URL url = result.getURL();
//
//log.info(RequestHeaders);
//log.info(ResponseHeaders);
log.info(responseData);

运行脚本,在控制台可以看到相应的日志输出:
在这里插入图片描述
JMeter还提供了一个内置对象 prev,该内置对象可以直接使用 SampleResult 类中的方法,将上面示例中的【beanShell取样器】的语句修改成下面的:

// 获取请求头
String RequestHeaders = prev.getRequestHeaders();
// 获取响应头
String ResponseHeaders = prev.getResponseHeaders();
// 获取响应码
String responseCode = prev.getResponseCode();
// 获取响应数据
String responseData = prev.getResponseDataAsString();log.info(RequestHeaders);
log.info(ResponseHeaders);
log.info(responseData);

运行后,发现效果是一样的。


http://chatgpt.dhexx.cn/article/bTN3MFcR.shtml

相关文章

jmeter内置变量 vars 和props使用详解

vars和props都是jmeter的内置变量,且本质都是Map类型 用python语言来理解的话,就是字典格式 最主要两点的区别: vars 只能在当前线程组内使用,props 可以跨线程组使用 vars 只能保持String 或者Objec, props 是 Hash…

Ansible中vars(变量)定义

1、变量使用的原因 playbook的编写是使用yml的语法,虽然该语法规则较为简单,但是,同其他语法相同该语法也有变量、循环等机制的使用。变量的使用就是为了提高我们所写剧本的复用性(当某个参数更改时,直接更改变量的赋…

vue3解决no-unused-vars报错

vue3解决no-unused-vars 前言添加配置 前言 在上一节,针对 vue3配置了ESLint,此时,App.vue 和 HelloWorld.vue 报了一个 no-unused-vars 的错误。 添加配置 vue3 是尤大写的,参考下尤大的配置:.eslintrc.js {no-u…

Jmeter内置变量vars和props

在使用jmeter作接口测试时,有些参数并不是明文直接传递的,须编码或加密后传输。此时可以使用BeanShell取样器、BeanShell前置和后置处理器等对参数进行加工处理。 vars和props都是jmeter的内置变量,不必先定义,可以直接使用 二者…

Jmeter 的 vars 和 props 用法

Jmeter 的 JSR223 控件是 代替 BeanShell 的新一代脚本控件,支持多种脚本语言,尤其是其中的 Groovy,更是重点推荐使用的脚本语言,本文研究其中的 vars 和 props 两种对象的用法。 props 和 vars 主要有两点区别: vars…

optistruct中的DRESP2响应设置

1.先编写自己的函数公式 函数名后面的括号中要有式中包含的变量 2.定义响应,类型选择为function,dequation选择刚才设置的函数 点击edit,输入函数表达式中变量对应的响应个数,并分别选择对应哪个响应 返回,点击cr…

结构优化设计with OPtiStruct

上手OptiStruct做结构优化设计,借助该软件强大的优化运算功能,已经成为行业的主流结构优化工具。因此,决定整理一下简要的操作步骤,以备后继之需。 我目前使用的是Hyper13.0版本。 首先是通过hypermesh进行网格划分,其…

大学生方程式赛车借助Altair OptiStruct 实现轻量化和燃料效率提升

项目介绍 每年一届的大学生方程式汽车大赛由英国机械工程师学会 (IMechE) 在英国一级方程式银石赛道举办。来自世界 38 个国家/地区的 178 支报名队伍将在 2014年展开激烈的角逐。想要获得胜利,各队需要展现出他们在技术、工程、设计和制造方面的高超技艺。他们还要…

Hypermesh案例学习笔记

根据我要自学网Hypermesh2017教程,1-10~1-13课程学习笔记 面板介绍 直接放教程里的图了 模型静力分析 模型导入与简化 尽量使用板壳单元,因此抽取模型中面: 点一下模型,点extract就可以得到中面的部件集 为了使网格均匀&am…

HyperMesh有限元分析报错集锦

1. 用hypermesh中的OptiStruct来进行有限元静力学分析,出现一个错误,错误代号61 Error 61: No elements found in input data 解决办法:如果你已经设置好材料、属性,并且为单元赋予了属性,定义了载荷步,在…

hyperstudy联合matlab,在Hyperworks中使用HyperStudy进行多学科优化研究 | 坐倚北风

本文介绍使用Hyperworks中的HyperStudy进行多学科尺寸优化的方法。所使用模型为Hyperworks帮助文档tutorials\hst\HS-4210中的plate1. tpl和plate2. tpl。这两个模型均为使用Optistruct求解器创建的平板有限元分析模型。 该模型由三个部件组成,设计变量为该三个部件对应的板壳…

hypermesh分析流程

对于CAE初学者来说,hypermesh是一个很适合的工具,既可以作为其他分析软件的输入,自带的求解器也能取得很精确的结果,本文是作者的一些实用心得,全是干货。学习一个软件时,软件的操作可以慢慢摸索&#xff0…

Cuda编程-04 计算单元结构

Tesla架构计算单元 如下图,为Tesla架构芯片构造图: 其中需要重点关注的部件为:流多处理器(Stream Multiprocessor,SM),流处理器(Streaming Processor,SP)。在该GPU中,最核心的执行单元为SP&…

【有限元分析】焊缝疲劳分析-热点应力插值法-hypermesh+ncode

一、焊缝疲劳分析整体流程: (对于需要调整壁厚的模型,可以通过导入已经修改后的模型,通过project命令将网格拉伸至surf即可,相比重新画简单) 1、建立CDB模型,验算极限强度 2、建立六个自由度…

python计算复合材料层合板ABD刚度矩阵、预测层合板强度

鄙人不才,在学校的时候没有学python,复合材料力学也是一知半解,后来工作的时候遇到了需要计算复合材料层合板ABD刚度矩阵的内容,然后恰好在学习python,于是花时间编写了下预测这方面的内容,然后后期还编写了…

基于Hypermesh、Nastran、Abaqus、LS_Dyna和Femfat的电池包仿真分析

基于Hypermesh、Nastran、Abaqus、LS_Dyna和Femfat的电池包仿真分析 动力电池作为新能源车动力系统的重要组成部分,电池包作为电池的支撑载体,起到保护电池组正常工作的作用,其结构安全性不容忽视。 本套课程采用Hypermesh、Optistruct、Nastran、Abaqus、LS_Dyna和Femfat软件对…

连续体结构拓扑优化方法介绍

连续体结构拓扑优化方法介绍 材料的有效利用一直是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。早期结构优化主要是针对尺寸的优化问题,设计域形状是固定的。后来随着结构优化问题的提出&#xff0…

HyperWorks2021软件安装教程

下载软件 https://www.xsoftnet.com/share/a0004MWyQAg9r.html产品介绍: HyperWorks一款功能强大的开放式架构仿真软件。拥有先进的技术以及高性能、高效和创新的产品,为用户提供了设计、仿真和制造等服务。支持电磁分析设计、材料建模制造、多物理场分…

基于ABAQUS和Optistruct汽车结构惯性释放分析详解

导读:惯性释放是允许对完全无约束的结构进行静力分析。通常我们做线性静力分析需要保证结构没有刚**移,否则求解器没有办法计算。但是很多分析,例如飞机在飞行时,轮船在航行(物体整体具有加速度)时&#xf…

那些干到40岁的程序员都去哪儿了?

最近和不少30多岁的程序员朋友们聊天,发现大家普遍非常焦虑。 原因主要有几点,一是担心未来能不能继续保持现有收入,害怕40岁之后薪资会不会下降,甚至失业。二是大家普遍有房贷或者车贷,这本身也是一种精神压力。三是…