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
英文地址,請注明出處:http://en.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…