Jmeter 中 Beanshell 的使用

目录

前言:

Beanshell 介绍

常用内置变量

log

vars 和 props

vars 常用方法:

props 常用方法:

prev

综合运用


前言:

JMeter 是一个广泛使用的性能测试工具,它支持许多不同的测试技术和方法。其中,Beanshell 是一种常用的脚本语言,它可以用来自动化测试脚本的执行和参数化测试。

Beanshell 介绍

Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标准 java 语法及一些扩展脚本语法,类似于 javaScript,在工作中可能用的多的就是:

  • Beanshell 取样器:跟 Http 取样器并列

  • Beanshell 前置处理器:一般放在 Http 请求下,在请求后处理一些数据

  • Beanshell 后置处理器:一般放在 Http 请求下,在请求前处理一些数据

  • Beanshell 断言:一般放在 Http 请求下,做一些复杂断言

常用内置变量

log

打印日志,我们常常可以用来调试问题,使用举例

  1. log.info("你想打印的内容")
  2. log.error("你想打印的错误内容")

vars 和 props

区别:

  • vars 只能在当前线程内使用,props 可以跨线程组使用
  • vars 只能保存 String 或者 Object,props 是 Hashtable 对象

vars 常用方法:

  1. vars.get(String key):从 jmeter 中获得变量值;
  2. vars.put(String key,String value):数据存到 jmeter 变量中;

props 常用方法:

  1. props.put("token","ertyuiahdg127423g4hjdkacnb");
  2. props.get("token");

prev

获取前面的 sample 返回的信息,常用方法:

  1. prev.getResponseDataAsString():获取响应信息
  2. prev.getResponseCode() :获取响应 code

综合运用

一般来说,我们接口返回都是标准的 json 格式数据,例如:

{"datas":[
{"name":"张三","age":18,"address":"河北","phone":"1311111111"},
{"name":"李四","age":28,"address":"北京","phone":"13222222222"},
{"name":"王五","age":23,"address":"江苏","phone":"13333333333"},
{"name":"赵六","age":32,"address":"湖北","phone":"13444444444"},
{"name":"玛丽","age":45,"address":"美国","phone":"13555555555"},
{"name":"亨利","age":39,"address":"法国","phone":"13666666666"}]
}

那我就需要使用一些专门处理 json 数据的 jar 包来对数据进行二次加工,这里举例使用 json.jar,具体代码如下:

//从json.jar导入所需要的类
import org.json.JSONObject;
import org.json.JSONArray;//从变量获取数据,因为我在用户自定义变量设置的上面的json数据
String response = vars.get("response");
// 打印日志看看是否取到
log.info("看看response:"+response);
//String reponse = prev.getResponseDataAsString();//如果从接口取,可以这么写// String 转化成JSONObject
JSONObject resObj = new JSONObject(response);
// 去除datas下的数据
JSONArray resArray = resObj.get("datas");
log.info("取出resArray:"+resArray.toString());//注意,需要把array转成String才能打印// 遍历取出年龄>30的数据,并存入新的JSONObject
JSONObject newObj = new JSONObject();//定义一个空的JSONObject
for(JSONObject item:resArray){int age = item.get("age");//取出age
if(age>30){
String name = item.get("name");//取出name作为keynewObj.put(name,age);}
}
// 打印下取出的数据正确与否
log.info("大于30的人:"+newObj.toString());
// 存入变量,供下面接口使用
vars.put("newObj",newObj.toString());

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6 | 中国天气网

文章目录 用Python爬取中国天气网的天气预报信息1. 获取HTML页面内容2. 解析HTML并提取数据3. 保存数据到CSV文件4. 主函数5. 爬虫脚本用Python爬取中国天气网的天气预报信息 在这篇博客中,我将会展示如何使用Python编程语言来从中国天气网爬取天气预报信息。这将涵盖如何获取…

Qt实现双控制柄的Slider

目标 实现带有左右两个控制柄的滑动条;控件可设定最小值和最大值;控件可设定控制柄的最小距离; 效果演示 思路 1. 标准的Slider控件只有一个Handle,所以想要通过改造QSlider来实现两个Handle是非常困难的,“自绘”…

Vue+Nodejs 使用WebSocket创建一个简易聊天室

文章目录 一、页面效果二、架构流程三、技术细节1.客户端2. 服务端 一、页面效果 二、架构流程 使用vue编写前端页面&#xff0c;nodejs处理服务端消息&#xff0c;WebSocket进行实时通信 三、技术细节 1.客户端 <template><div><form onsubmit"return…

【itext7】itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加表单控件&#xff08;单行文本框、多行文本框、单选框、复选框、下拉框、按钮&#xff09;。 目录 一、itext操作PDF表单 1.1、添加单行文本框 1.2、添加多行文本框 1.3、添加单选框 1.4、添加复选框 1.5、添加下拉框…

无涯教程-html()

html()方法获取第一个匹配元素的html内容。此属性在XML文档上不可用&#xff0c;但适用于XHTML文档。 html( ) - 语法 selector.html() html( ) - 示例 以下示例将获取第一段的HTML内容&#xff0c;并将其显示在第二段中。请同时检查 html(val)方法的描述。 <html>&…

WEB安全测试通常要考虑的测试点

1、问题&#xff1a;没有被验证的输入 测试方法&#xff1a; 数据类型&#xff08;字符串&#xff0c;整型&#xff0c;实数&#xff0c;等&#xff09; 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值&#xff08;枚举型&a…

MacBook安装Git三种方式

MacBook安装Git三种方式 git官方下载地址: https://git-scm.com/download 方式一(推荐) Git官网下载最新git Mac版本安装 下载地址: https://git-scm.com/download/mac Binary installer 二进制安装 下载 git-2.27.0-intel-universal-mavericks.dmg 点击安装 查看版本 git …

大语言模型

LLM通常基于Transformer架构构建&#xff0c;这类模型依赖于自注意力机制。Transformer能够高效利用计算资源&#xff0c;使得训练更大规模的语言模型成为可能。 例如&#xff0c;GPT-4包含数十亿个参数&#xff0c;在大规模数据集上训练&#xff0c;在其权重中有效编码了大量…

k8s使用helm部署Harbor镜像仓库并启用SSL

1、部署nfs存储工具 参照&#xff1a;https://zhaoll.blog.csdn.net/article/details/128155767 2、部署helm 有多种安装方式&#xff0c;根据自己的k8s版本选择合适的helm版本 参考&#xff1a;https://blog.csdn.net/qq_30614345/article/details/131669319 3、部署Harbo…

WPF实战学习笔记04-菜单导航

菜单导航 添加文件与文件夹 添加文件夹 ​ ./Extensions 添加文件&#xff3b;类型&#xff1a;用户控件&#xff3d; ./Views/IndexView.xaml ./Views/MemoView.xaml ./Views/TodoView.xaml ./Views/SettingsView.xaml ./ViewModels/IndexViewModel.cs ./ViewModels/IndexV…

0成本搭建自己的云数据库

第一步&#xff0c;租免费的云服务器 www.aliyun.com 阿里云的&#xff0c;可以免费租三个月 进入主页后选择云服务器ESC 选择这款&#xff0c;点击试用就行 第二步&#xff0c;配置服务器 在配置服务器系统的时候选择centos&#xff0c;省事&#xff0c;别选ubuntu&#x…

动手学深度学习——线性回归从零开始

生成数据集synthetic_data()读取数据集data_iter()初始化模型参数w, b定义模型&#xff1a;线性回归模型linreg()定义损失函数&#xff1a;均方损失squared_loss()定义优化算法&#xff1a;梯度下降sgd()进行训练&#xff1a;输出损失loss和估计误差 %matplotlib inline impor…

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

iOS pod EaseIMKit库如何放在本地使用

在使用环信EaseIMKit库的时候&#xff0c;发现有些开发者需要改动库中的一些逻辑&#xff0c;或者有UI上的一些调整&#xff0c;如果直接去改pods里面的库&#xff0c;在之后的库版本升级会把之前修改过的代码覆盖掉&#xff0c;这个时候我们就需要pod指向本地的库&#xff0c;…

KubeVela篇05:为kubevela开发terraform-mycloud Addon插件

通过前面的章节,我们已经学习了解terraform,并通过vpc资源例子,为私有云/混合云开发了terraform provider,这一节介绍如何将我们开发的mycloud terraform provider整合到kubevela控制平台上,以通过在application中声明一个kubevela组件的方式去申请基础设施资源。 我们需…

【数据结构】---时间复杂度与空间复杂度

时间复杂度与空间复杂度 1.&#x1f4c9; 时间复杂度&#x1f4cc;1.1 时间复杂度的概念1.2 大O的渐进表示法 &#x1f3f0;空间复杂度&#x1f4c3;例题分析1.案例&#xff08;常数阶&#xff09;2.案例&#xff08;线性阶&#xff09;3.案例&#xff1a;&#xff08;平方阶&a…

css元素定位:通过元素的标签或者元素的id、class属性定位

前言 大部分人在使用selenium定位元素时&#xff0c;用的是xpath元素定位方式&#xff0c;因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观&#xff0c;更好理解一些。 css元素定位方式往往被忽略掉了&#xff0c;其实css元素定位方式也有它的价值&…

【数据库 - 用户权限管理】(简略)

目录 一、概述 二、用户权限类型 1.ALL PRIVILEGES 2.CREATE 3.DROP 4.SELECT 5.INSERT 6.UPDATE 7.DELETE 8.INDEX 9.ALTER 10.CREATE VIEW和CREATE ROUTINE 11.SHUTDOWN 12GRANT OPTION 三、语句格式 1.用户赋权 2.权限删除 3.用户删除 一、概述 数据库用…

Redis多级缓存

文章目录 多级缓存背景JVM进程缓存Caffeine案例分析安装MySQL导入SQL Lua语法变量与循环数据类型声明变量循环 函数与条件控制函数条件控制 实现多级缓存安装OpenResty安装opm工具目录结构配置Nginx的环境变量运行启动 快速入门反向代理流程OpenResty监听请求编写item.lua 请求…

基于深度学习的高精度交通信号灯检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度交通信号灯检测识别可用于日常生活中检测与定位交通信号灯目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的交通信号灯目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…