Jmeter的元件使用介绍:(七)后置处理器详解

Jmeter的后置处理器主要用于取样器执行后的提取数据操作。

Jmeter常用的后置处理器有:Json提取器、正则表达式提取器、边界提取器、Beanshell后置处理器。此外还有Xpath提取器、CSS选择器提取器等,由于这两项多用前端页面提取元素,目前的项目基本都是采用前后端分离的技术,Jmeter主要的对象是接口,所以这两项不怎么会用上。

本文以“聚合数据”提供的免费API进行讲解,有需要的可以了解下聚合数据所提供的接口信息,账号注册等。
1、百度搜索“聚合数据”,进入到聚合数据官网注册个账号。
2、注册完账号后,点击【API】导航即可选用免费的试用接口
 


3、选用想用的API分类,本文以【新闻头条为例】

 

 

自此完成了接口申请,可以在【数据中心】->我的API中查看接口的信息,后边我们在测试的时候可以参照API文档进行接口测试

 

一:Json提取器
通过JsonPath语法提取取样器信息。
1、Jmeter的Json提取器页面介绍:
 


(1):Apply to选项
(1.1)Main sample and sub-samples:应用于主样本和子样本
(1.2)Main sample only:仅应用于主样本,一般选这个选项即可
(1.3)Sub-samples only:仅应用于子样本
(1.4)Jmeter Variable Name to use:应用于Jmeter变量中,例如:我们可以使用String resopnse=prev.getResponseDataAsString();得到请求的响应信息后,将变量赋值到Jmeter变量response,然后通过${response}引入到此处。这个做法其实多此一举,不推荐。
(2)Names of created variables:给提取到的变量取名
(3)JSON Path expressions:JsonPath的表达式
(4)Match No:可以填写数字(0,1,-1),0表示随机取一个数据,1表示取第一个数据,-1表示取全部数据,也可以不填,不填写默认取第一个数据
(5)Default Values:未取到值的时候默认值

JsonPath的语法介绍:
(1)$:表示根节点元素
(2)@:表示当前所在位置节点元素
(3)*:表示通配所有元素
(4).:表示匹配当前路径的下级节点
(5)..:表示递归匹配当前路径的所有节点
(6)[index]:表示匹配数组索引类型的节点
(7)?(表达式):对数据进行筛选

案例1:此处通过调用【聚合报告】的【新闻头条】请求,获取一个数据信息

(1)在Jmeter中发起【新闻头条列表】请求:

(2)发起请求后,得到了接口响应的JSON信息:

(3)我们想要获取提取响应信息里的“titile”信息,那么就可以使用JSON提取器。
(3.1)分析Json层级关系,位于"result"->"data"->"title"下
我们可以逐层取数据如:$.result.data[*].title

(3.2)我们也可以直接递归查找,如:$..title

(4)验证通过后在JSON提取器中填写信息

(5)发起请求,检查Jmeter变量是否提取成功。

案例2:通过调用【聚合报告】的【新闻头条】请求后,我想即获取title,又获取uniquekey和author_name
在Json提取器中可以一次性提取多个值得,如图

执行结果:

此处引发了一个思考:我们此处获取的值得都是随机的,也就是说,获取到的title,uniquekey,author_name可能都是在不同新闻下的,在做接口测试的时候,往往是需要保持各个数据都是同一主体信息下,下面案例给出解决方案。

案例3:通过调用【聚合报告】的【新闻头条】请求后,我想即获取title,又获取uniquekey和author_name,并且保证这三个信息都是在同一则新闻下。
(1)先添加一个Json提取器获取每个新闻的唯一标识:uniquekey:
 


(2)再根据这个uniquekey做数据筛选,此处就需要用到了?()进行数据筛选。
附上JsonPath表达式:
根据uniquekey提取title:$..data[?(@.uniquekey=='${uniquekey}')].title
根据uniquekey提取author_name:$..data[?(@.uniquekey=='${uniquekey}')].author_name

(3)执行请求,查看提取情况

二:正则表达式提取器
Jmeter还可以使用正则表达式提取取样器信息。

Jmeter里的正则提取器页面介绍:
 


1、检查的响应字段,一般可以选择:种主体、信息头、请求头,默认选择的是主体,有些时候提取值是放在信息头的,这里需要注意选择一下
2、引用名称:给提取的变量起个变量名
3、正则表达式:填写的正则表达式
4、模板:可以填写$0$,$1$,$2$,$-1$等等 $0$:表示随机取匹配到的值 $-1$:表示取匹配到的所有值 $1$:表示取匹配到的第一个值 $2$:表示取匹配到的第二只值,如此类推
5、匹配数字:0表示随机,-1表示全部,1表示第一个数
6、缺省值:如果表达式没有取得到值,那默认一个值

正则表达式语法介绍:
1、常用元定符:
.:匹配除换行符以外的任意字符
$:匹配字符串的结束
^:匹配字符串的开始
2、常用限定符
*:重复零次或更多次
+:重复一次或更多次
?:重复零次或一次
{n}:重复n次

接下来我们用正则表达式提取uniquekey
思考步骤:1、优先考虑贪婪模式是否能获取到值,即(.+?)的表达式
2、分析所要获取的值得左右信息,把要获取的值用()包起来
如:此处想要获取uniquekey,它的左边界是固定的:"uniquekey",然后我们想要拿的值就用()包起来,所以此处的正则表达式为:"uniquekey":"(.+?)"
3、我们拿自己写的正则表达式到正则表达式在线测试器检查下语法是否有误,此处介绍的正则表达式测试网址:
Regex正则表达式在线测试、生成、解析工具 - GoRegex.cn
 


4、一般贪婪模式可以解决90%的正则提取问题,遇到个别提取不到的再用其他限定符代替
5、我们确认正则表达式无误后,就可以放到正则表达式提取器使用了。
 


执行结果:

三、边界提取器
该提取器简单粗暴,只需要定义左右边界即可获取值,在一些响应信息体格式都是固定的情况,可以考虑使用该提取器提取数据

1、我们试下使用边界提取器提取uniquekey

执行结果:

缺点:局限性比较高,对于一些结构比较灵活的字符串,还是得需要使用正则表达式

四、Beanshell后置处理器
跟Beanshell前置处理器的使用完全一直,只是执行顺序不一样,Beanshell前置处理器会在取样器执行前执行,而Beanshell后置处理器在取样器执行后执行,后置使用方法见前面所写的博客:
Jmeter全方面讲解——Jmeter的元件使用介绍:(四)前置处理器详解 - 筱筱创 - 博客园

 

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

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

相关文章

Allure的安装,在Pytest中的简单使用以及生成测试报告

目录 1.Allure的安装 1--下载网址 2--选择对应系统版本下载 3--配置Allure环境变量 4--验证安装是否成功 5--配置JAVAJDK的环境变量(如果已经配置,可以忽视这一步) 2.python中pytestAllure 1--python安装Allure包 2--生成测试报告 1--使用pyt…

Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程

Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程 7月26日下午,某医院用户的 HIS 系统无法连接,报如下错误:初步判断是归档日志问题。 用户的 HIS 系统数据库是双节点 Oracle 11g Rac 集群。登录服务器…

ArKTS:List 数组

一种:/**# encoding: utf-8# 版权所有 2025 ©涂聚文有限公司™ # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎# 描述: 数组# Author : geovindu,Geovin Du 涂聚文.# IDE : DevEco Studio 5.1.1 …

Spring Boot 3整合Spring AI实战:9轮面试对话解析AI应用开发

Spring Boot 3整合Spring AI实战:9轮面试对话解析AI应用开发 第1轮:基础配置与模型调用 周先生:cc,先聊聊Spring AI的基础配置吧。如何在Spring Boot 3项目中集成Ollama? cc:我们可以通过OllamaConfig.java…

标准SQL语句示例

一、基础操作1. 数据库操作-- 1. 创建数据库 CREATE DATABASE 数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 2. 删除数据库 DROP DATABASE IF EXISTS 数据库名称;-- 3. 选择数据库 USE 数据库名称;-- 4. 显示所有数据库 SHOW DATABASES;-- 5. 查看数据库创…

STM32-基本定时器

一.基本定时器简介 STM32F1 系列共有 8 个定时器,分别为:基本定时器、通用定时器、高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部IO。 二.基本定时器功能 上图为基本定时器的功能框…

ofd文件转pdf

主要后端使用Java实现&#xff0c;前端可随意搭配http请求添加依赖&#xff1a;<!-- OFD解析与转换库 --><dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-converter</artifactId><version>1.17.9</version></…

4.应用层自定义协议与序列化

1.应用层程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层1.1再谈“协议”协议是一种 "约定". socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些 "结构化的数据" 怎么办呢…

【QT搭建opencv环境】

本文参考以下文章&#xff1a; https://blog.csdn.net/weixin_43763292/article/details/112975207 https://blog.csdn.net/qq_44743171/article/details/124335100 使用软件 QT 5.14.2下载地址&#xff1a;download.qt.io 选择版本&#xff1a;Qt 5.14.2 Qt 5.14.2百度网盘链接…

golang--函数栈

一、函数栈的组成结构&#xff08;栈帧&#xff09; 每个函数调用对应一个栈帧&#xff0c;包含以下核心部分&#xff1a; 1. 参数区 (Arguments) 位置&#xff1a;栈帧顶部&#xff08;高地址端&#xff09;内容&#xff1a; 函数调用时传入的参数按从右向左顺序压栈&#xff…

【FAQ】创建Dynamics 365 Sales环境

参考文章&#xff1a;5 分钟内安装 Dynamics 365 Sales 步骤 1&#xff1a;访问 Power Platform 管理中心 导航到make.powerapps.com&#xff0c;然后点击右上角的齿轮图标。选择管理中心&#xff0c;或者访问aka.ms/ppac访问 Power Platform 管理中心。 第 2 步&#xff1a…

【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录前言示例数据集数…

7.项目起步(1)

1&#xff0c;项目起步-初始化项目并使用git管理创建项目并精细化配置src目录调整git 管理项目2项目起步-配置别名路径联想提示什么是别名路径联想提示如何进行配置 &#xff08;自动配置了&#xff09;{"compilerOptions" : {"baseUrl" : "./",…

【C++详解】深入解析继承 类模板继承、赋值兼容转换、派生类默认成员函数、多继承与菱形继承

文章目录一、继承概念二、继承定义定义格式继承后基类成员访问方式的变化类模板的继承三、基类和派⽣类间的转换(赋值兼容转换)四、继承中的作用域隐藏规则两道笔试常考题五、派生类的默认成员函数四个常见默认成员函数实现⼀个不能被继承的类六、继承与友元七、继承与静态成员…

加法器 以及ALU(逻辑算术单元)

加法器框架&#xff0c;首先介绍原理&#xff0c;然后引入一位加法器最后再引入多位加法器最后引入带符号的加法器这一节涉及到的硬件电路的知识理解就好&#xff0c;实在看不懂就跳过&#xff0c;但是封装以后的功能必须看懂。这是一个一般的加法过程涉及到的必要元素图中已经…

设计模式实战:自定义SpringIOC(亲手实践)

上一篇&#xff1a;设计模式实战&#xff1a;自定义SpringIOC&#xff08;理论分析&#xff09; 自定义SpringIOC&#xff08;亲手实践&#xff09; 上一篇文章&#xff0c;我们介绍了SpringIOC容器的核心组件及其作用&#xff0c;下面我们来动手仿写一个SpringIOC容器&#…

力扣面试150(42/150)

7.28 20. 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…

基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务

之前的两篇文章我们介绍了微服务的基础概念及其服务间通信机制。本篇将深入探讨微服务的核心保障&#xff1a;服务保护与分布式事务。一、微服务保护问题描述&#xff1a; 在一个购物车的微服务中&#xff0c;倘若某一项服务&#xff08;服务A&#xff09;同一时刻访问的数据十…

LeetCode: 429 N叉树的层序遍历

题目描述给定一个 N 叉树&#xff0c;返回其节点值的层序遍历&#xff08;即从左到右&#xff0c;逐层访问每一层的所有节点&#xff09;。示例输入格式&#xff08;层序序列化&#xff09;&#xff1a;输入示意&#xff1a;1/ | \3 2 4/ \5 6输出&#xff1a;[[1], [3,2,4…

使用phpstudy极简快速安装mysql

使用 phpStudy 极简快速安装 MySQL 的完整指南&#xff1a; 一、phpStudy 简介 phpStudy 是一款 Windows 平台下的 PHP 环境集成包&#xff0c;包含&#xff1a; Apache/Nginx PHP 5.x-7.x MySQL 5.5-8.0 phpMyAdmin 二、安装步骤 1. 下载安装包 访问官网下载&#xf…