jmeter做接口和自动化常见的使用方法

news2024/11/15 21:43:47

目录

    • 一、提取器
      • 1.JSON 提取器的应用场景
        • 1.1.提取某个特定值
          • 1.1.1.切片提取获取某个位标值
        • 1.2.提取多个值
        • 1.3.按条件查询按
          • 1.3.1.件提取是一个常用的方法
          • 1.3.2.还有其余几种用法
        • 1.4.提取值组成的列表
      • 2. 正则 提取器的应用场景
    • 二、CSV 参数化
    • 三、beanShell 脚本
      • 1.beanShell 引用变量与定义变量与引用函数
      • 2.beanShell 打印输出日志
      • 3.beanShell 断言
    • 四.BeanShell断言的使用
      • 4.1 //状态码断言
      • 4.2 响应体包含特定内容断言代码:
    • 五.使用BeanShell去掉某一个请求头参数
    • 六. 上传文件

一、提取器

1.JSON 提取器的应用场景

1.1.提取某个特定值

1.1.1.切片提取获取某个位标值

在这里插入图片描述
在这里插入图片描述

1.2.提取多个值

1.2.1.提取多个同名值这是查找全部然后按条件提取的方法,如果选择提取全部(-1)传递的时候需要改变成:变量名_1,变量名_2,变量名_matchNr返回你提取的数量,某些场景可以用于确认遍历次数
在这里插入图片描述
在这里插入图片描述

1.3.按条件查询按

1.3.1.件提取是一个常用的方法

在这里插入图片描述
在这里插入图片描述

1.3.2.还有其余几种用法

1.3.2.1. . . d a t a [ ? ( @ . i d > ′ 2020 − 06 − 0 1 ′ ) ] 大小比对 1.3.2.2. ..data[?(@.id > '2020-06-01')] 大小比对 1.3.2.2. ..data[?(@.id>20200601)]大小比对1.3.2.2.…data[?(@.id =~ /.会员.?/i)] 包含某些字符
1.3.2.3.$…data[?(@.id)] 这个字段

1.4.提取值组成的列表

1.4.1.提取值组成的列表这个方法能在某些场景使用,不过一般都是单独提取两个值,返回值是 变量 = {“id”: “演示”,“name”: “演示”}
在这里插入图片描述
在这里插入图片描述

2. 正则 提取器的应用场景

1.提取某个固定的字段的值
在这里插入图片描述
在这里插入图片描述

二、CSV 参数化

1.csv绝对路径场景
在这里插入图片描述

2.csv相对路径场景

2.1.需要注意的是,相对路径是以jmx脚本所存在目录为开始,…/为脚本上级目录
在这里插入图片描述

3.csv文件编码
3.1.如果你的csv文件是通过其他方式转译生成的,那么就选择gb2312编码,直接生成的默认选择utf-8
**加粗样式
**
4.csv变量名称
4.1.设置变量名称
这步是csv自动化的核心,设置变量名称a,b,c,d对应csv文件的第一行,同时勾选忽略第一行,这样我们调整文件时候也方便维护
在这里插入图片描述
在这里插入图片描述

5.csv允许带引号
5.1.在某些场景,我们断言或者传递参数,其中字符串中包含了引号,这时候我们就需要勾选允许带引号,默认是关闭状态不需要开启
在这里插入图片描述

6.csv线程共享
6.1.正常业务下,一个线程组一个csv配置。线程共享一定要选择当前线程组,不然会出现跨线程变量覆盖、参数传递失效等奇怪问题
在这里插入图片描述

三、beanShell 脚本

beanShell 脚本 配合 CSV配置让csv文件更精简,更容易维护,同时也能解决环境依赖项的变动问题

1.beanShell 引用变量与定义变量与引用函数

1.1 vars.get(String key); 从jmeter中获得变量值,如:vars.get(“key”); 注意,需要用双引号,不能这样vars.get(“${key}”);
1.2 vars.put(String key,String value); 数据存到jmeter变量中,如vars.put(“key”,“123456”); //变量名需要用双引号
1.3props.get(String key);与vars作用大致相同,vars 只能在当前线程组内使用,props 可以跨线程组使用
在这里插入图片描述

2.beanShell 打印输出日志

2.1 log.info("响应状态码" + ResponseCode);
2.2 log.debu("调试信息");
2.3 log.warn("警告信息");
2.4 log.error("出错信息");

在这里插入图片描述

3.beanShell 断言

3.1 	名称:BeanShell断言组件的自定义名称,见名知意最好。
3.2	注释:即添加一些备注信息,对该BeanShell断言组件的简短说明,以便后期回顾时		查看。
3.3	Reset bsh.Interpreter before each
call:每个BeanShell测试元素都有自己的解释器副本(对于每个线程)。如果重复调用测试元素,例如在循环内,除非选择在每次调用之前重置bsh.Interpreter选项,否则解释器将保留在调用之间。一些长时间运行的测试可能会导致解释器使用大量内存。
由于BeanShell的bsh.Interpreter存在内存泄露,常规方法无法支持长时间的压力测试。JMeter官网推荐,在使用BeanShell进行长时间测试时,打开选项Resetbsh.Interpreterbefore eachcall,则在每次调用BeanShell程序前,都把解释器重置,以释放解释器之前占用的内存。
参数 (-> String Parameters和String[]bsh.args):输入String参数。String
3.4	[]bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令		行用户输入进去的参数。
3.5	脚本文件:脚本文件(可以填入脚本文件路径),可以点击后边的浏览选择脚本文		件。
3.6	Script (see below for variables that aredefined):编写脚本,参照下文定义的变量		(使脚本文件参照定义的变量来运行)

四.BeanShell断言的使用

4.1 //状态码断言

log.info(“状态码:” + ResponseCode);
if(ResponseCode.equals(“200”)){
Failure=false; // 表示断言成功
}
else{
Failure=true; // 表示断言失败
FailureMessage=“响应状态码非200”; // 自定义的失败信息
}
注:字符串只能使用双引号,字符串相等要使用" “.equals(” ")表达式。
在这里插入图片描述

4.2 响应体包含特定内容断言代码:

在这里插入图片描述

五.使用BeanShell去掉某一个请求头参数

5.1 使用beanshell预处理程序要删除不需要的请求头参数

import org.apache.jmeter.protocol.http.control.HeaderManager;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印删除指定请求头参数前的全部请求头信息
log.info("删除前" + headers.getHeaders().getStringValue());
// 删除请求头指定的信息
sampler.getHeaderManager().removeHeaderNamed("Content-Type");
// 打印删除指定请求头参数后的全部请求头信息
log.info("删除后" + headers.getHeaders().getStringValue());

在这里插入图片描述

六. 上传文件

6.1实际抓取接口
在这里插入图片描述

6.1.1 jmeter实际配置接口
在这里插入图片描述
在这里插入图片描述

注意点:1、确定请求头是符合要求的,一般上传接口会变更请求头信息

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

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

相关文章

基于python inference 、ResNet实现的图像分类 (附完整代码可作为毕设参考)

这篇文章主要介绍了 图像分类的 inference,其中会着重介绍 ResNet。 2.模型概览 在torchvision.model中,有很多封装好的模型。 可以分类 3 类:

typecho去掉index.php

typecho去掉index.php一、前言二、配置过程三、问题所在四、解决方案五、一点体会一、前言 大家好,我是尝试中成长的站长,最近在使用typecho的过程中遇到了这种问题,index.php的伪静态没办法去掉,遂浏览器搜索了很多教程&#xf…

Jetpack架构组件库:WorkManager

WorkManager WorkManager 是Android最新一代的后台调度 API,主要是用来替换先前的旧版后台调度 API(如 JobScheduler 等)。 WorkManager 是适合用于持久性工作的推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,…

无线局域网接入

非法接人是指非授权终端与无线局域网中的接入点(Access Point,AP)之间建立关联的过程,非法接入使得非授权终端可以与无线局域网中的授权终端交换数据,并可以通过AP访问网络资源。 非法登录是指非授权用户远程登录网络…

【JavaEE初阶】第八节.多线程(基础篇)阻塞队列(案例二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、阻塞队列概论 1.1 阻塞队列的概念与作用 1.2 阻塞队列的应用场景 —— 生产者消费者模型 1.3 生产者消费者模型的好处 二、阻塞队列的实现 2.1 Java标准库里面…

java中常见API该如何使用?

目录 API(Application Programming Interface)概述 如何使用API? API(Application Programming Interface)概述 –应用程序编程接口 –编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令&#xff0c…

SECURECRT全局日志文件设置

SecureCRT配置自动记录日志很多人用SecureCRT时,希望自动记录日志,一个是方便以后查阅,一个是对自己的操作有个记录。可以看看自己做了什么操作,有时甚至可以看看之前是不是犯了什么错,是个很不错的功能。设置很简单&a…

[数据库迁移]-ES集群的部署

[数据库迁移]-ES集群的部署 森格 | 2023年1月 上一篇文件我们已经把Linux系统的LVM逻辑卷完成了,那下面我们就该把es集群环境搭建起来了,主要是以shell脚本来进行一键部署。 上文回顾:[数据库迁移]-LVM逻辑卷管理 一、环境介绍 1.1 环境配…

微分先行PID控制算法及仿真

微分先行PID控制的结构如图1所示,其特点是只对输出量y(k)进行微分,而对给定值y(k)不作微分。这样,在改变给定值时,输出不会改变,而被控量的变化通常是比较缓和的。这种输出量先行微分控制适用于给定值yd(k)频繁升降的场…

isNotEmpty() 和 isNotBlank() 的区别,字符串判空, StringUtils工具包 StringUtil工具类

目录1.StringUtils 和 StringUtilStringUtils 的依赖:StringUtils 的用法:StringUtil 工具类2. isNotEmpty() 和 isNotBlank()1.StringUtils 和 StringUtil 注:StringUtils 和 StringUtil 的区别(StringUtil为自定义工具类&#…

微信小程序——获取接口调用凭据access_token

问题背景 今天在搞一个微信小程序的时候,使用到了发布内容的问题,然后想使用微信请求接口,结果遇到了请求接口需要获取调用凭证access_token。 查看微信小程序开发文档 打开微信小程序开发文档后,打开服务端相关文档&#xff0…

电影《流浪地球2》观后感

趁着过年看了电影《流浪地球2》这部电影,同时也听说,今天好几部同期电影也不错,思考了一下,选择这部,记得以前有个笑话,说《流浪地球》成功开启了中国科幻的大门,而另一部电影成功将这部大门关起…

监听器、过滤器、拦截器,参考多篇文章整合而成,没有千篇一律的抽象回答!

参考文章1 过滤器、监听器、拦截器一、监听器二、过滤器1. POM.xml导包2. web.xml配置3. Filter过滤器编程三、拦截器1. 定义拦截器2. 配置加载拦截器3. 新建页面的存放地点四、过滤器、监听器、拦截器1. 三者作用2. 三者调用的时序(监听器、过滤器、拦截器&#xf…

ESP32设备驱动-DS18B20温度传感器驱动

DS18B20温度传感器驱动 1、DS18B20驱动 DS18B20 是一款温度传感器,可用于各种简单的项目。 通过使用 One-Wire (I2C) 总线,可以将多个传感器连接到ESP32。 DS18B20 的成本也相对较低,只需要一个额外的 4k7 上拉电阻。在本文中,将创建一个基本示例,通过串行读取温度和输出…

java ssm酒店客房管理系统设计

目 录 1 绪 论 1 1.1 系统开发背景 1 1.2 开发意义 1 1.3 可行性分析 1 1.3.1 技术可行性分析 2 1.3.2 市场需求的可行性分析 2 1.4 国内外发展状况 2 1.5 本文中的章节介绍 2 2 开发技术简介 3 2.1 B/S简介 3 2.2 MYSQL的主要功能 3 …

竟然34%的孩子有腺样体肥大,保守还是手术?

腺样体肥大是一个常见的问题,患病率也越来越高。研究发现,34%的儿童和青少年患有这种疾病。腺样体肥大最容易导致鼻塞、口腔呼吸、儿童打鼾、睡眠影响等问题,严重会导致反复鼻窦炎、中耳炎、听力损伤,一些父母也知道它可能会导致孩…

idea插件restfultool和httpclient

restfultool使用测试controllerRestController RequestMapping("/api") Slf4j public class ApiController {GetMapping("test1")public String test1(RequestParam String msg) {return "hello world " msg;}GetMapping("test2/{msg}&quo…

【华为上机真题】密码要求

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

Pytorch——anaconda环境下安装GPU版本

首先查看自己 CUDA 搜索 点击 系统信息 可以看到,我的CUDA 是 11.1版本 随后上官网查找匹配的 pytorch 、torchvision、torchaudio 版本 Previous PyTorch Versions | PyTorch 然后直接对 .whl 文件进行下载 https://download.pytorch.org/whl/torch_stable.ht…

操作系统-进程管理

一、进程的组成和状态 1、操作系统的作用:通过资源管理提高计算机系统的效率改善人机界面向用户提供友好的工作环境。 2、操作系统的特征:并发性、共享性、虚拟性、不确定性。 3、操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理。 4、操作系统的分类:批处理…