Jmeter的元件使用介紹:(四)前置處理器詳解

Jmeter的前置處理器可以用來在取樣器執行前做一些數據準備操作,也需要注意使用的作用域問題。常用的前置處理器有:用戶參數、BeanShell預處理器、JDBC預處理器。

一、用戶參數
【用戶參數】與前面介紹過的【用戶定義的變量】有相似之處,先來介紹下用戶參數的使用方法再去區分兩者的異同。
1、注意作用域的問題,(1)如果是放在測試計劃下,則整個測試計劃都可以引用該處定義的變量
(2)如果是放在線程組下,則只能在所放的線程組下引用
(3)如果是在請求下,則只能在具體請求下引用

2、用戶參數有名稱,用戶_N的定義,下面進行實例講解。
實例1:只定義一個用戶,則在引用變量的時候,永遠都是這個用戶的值。如圖:

?

?

執行結果:

實例2:定義多個用戶,則在引用變量的時候,會進行順序循環取對應用戶的值。如圖:

?

執行結果:

?

3、【用戶參數】與【用戶自定義的變量】的區別:
(1)【用戶參數】可以給每個參數賦多個值,而【用戶自定義的變量】只能賦一個值。

?

此處引發了一個思考,如果【用戶參數】與【用戶定義的變量】的變量名稱重復的時候,會引用哪個值呢?答案是會引用到【用戶參數】的值,此處是就近原則,離取樣器執行前最近的一次賦值為準。如此案例中,【用戶參數】與【用戶定義的變量】都含有name變量,則在執行的時候,會引用了【用戶參數】的值。
執行結果:

(2)【用戶參數】會在每次取樣器執行之前都運行一次,而【用戶自定義的變量】只會運行一次,這里使用在兩個元件中都使用time函數舉例

?

?

?

執行結果:

?

?

可以觀察到,用戶參數time1的變量值每次執行請求前都會變化一次,而用戶定義的變量time2的變量值都不會變。

二:Beanshell前置處理器
該元件功能十分強大,可以編寫Java代碼進行一些數據準備等操作。
1、先介紹下Jmeter里Beanshell的內置變量操作
(1)vars變量:用來操作Jmeter的變量值得,常用的方法有:
(1.1)vars.get("key"):從Jmeter變量中獲取指定鍵的值
(1.2)vars.put("key","value"):向Jmeter變量設置變量鍵值對
例子:


附上代碼:
String name=vars.get("name"); //此處獲取Jmeter的變量值轉換成Java的變量
log.info("獲取到的變量值為:="+name);//打印一下獲取的變量值

vars.put("phone","13211111111"); //向Jmeter變量中設置一個phone變量
log.info("設置phone的變量值為:="+vars.get("phone")); //打印一下設置的phone值
通過此變量可以對Jmeter變量進行設置或者獲取操作。點擊下右上角的三角形即可查看日志。
日志信息為:

?

(2)ctx變量:用來獲取當前線程的上下文信息,常用方法:
(2.1)ctx.getVariables().get("key"):等價于vars.get("key"),從Jmeter變量中獲取指定鍵的值
(2.2)ctx.getProperties().getProperty("key"):獲取Jmeter的屬性,這里可以獲取Jmeter.properties配置文件下的屬性。
(2.3)ctx.getThreadNum():獲取當前線程組編號
例子:

附上代碼:
log.info("=通過ctx形式獲取一下Jmeter存儲的變量:="+ctx.getVariables().get("name"));
log.info("=通過ctx形式獲取一下Jmeter屬性:="+ctx.getProperties().getProperty("sampleresult.default.encoding")); //此處驗證下獲取我們先前配置的編碼屬性
log.info("=====通過ctx形式獲取一下當前線程編號:="+ctx.getThreadNum());

日志展示:

(3)log變量:用來記錄日志,會寫進jmeter.log文件中,常用方法:
(3.1)log.info():打印普通日志
(3.2)log.warn():打印警告日志
(3.3)log.error():打印錯誤日志
例子:

(4)props變量:用來操作jmeter的屬性的,常用方法有:
(4.1)props.get("propName"):獲取Jmeter的指定屬性信息
(4.2)props.put("propName","propValue"):給Jmeter設置屬性
(4.3)props.containsKey("key"):判斷Jmeter是否存在指定key的屬性
(4.4)props.contains("values"):判斷Jmeter是否存在指定value的屬性
例子:


附上代碼:
log.info("通過props變量獲取下Jmeter的編碼屬性:"+props.get("sampleresult.default.encoding"));
log.info("通過props變量判斷下Jmeter的編碼屬性是否存在:"+props.containsKey("sampleresult.default.encoding"));

2、再來介紹下Beanshell的自帶數組傳參的使用
先看圖:


Beanshell是支持將變量值傳入到這里的數組的,多個值用“空格”隔開,下面舉個例子:

?

3、還有更高級的功能,比如:通過導入外部Jar包,調用外部Jar包的方法,完成自定義的功能,后續介紹到高級部分再進行補充

4、下面進行實際使用
(1)、在取樣器執行前,準備一些必要的參數,如時間參數

通過這個前置處理器提供了這個time變量參數,就可以在取樣器中使用該變量了

執行結果:

三:JDBC預處理器
用于在執行JDBC請求前,進行一些數據準備等操作,比如腳本在執行前,需要在數據庫新建一些記錄等數據。
例子:通過JDBC預處理器向數據庫中插入一些數據。

(1)執行JDBC預處理器前的表數據:

(2)編寫JDBC預處理器

(3)執行后,查看數據庫,數據新增成功了

(4)對上述例子可以改進下,有時候我們造數據的時候,可能是需要隨機生成一些測試數據的,那么我們就可以通過隨機變量傳進去。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93224.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

十七、K8s 可觀測性:全鏈路追蹤

十七、K8s 可觀測性:全鏈路追蹤 文章目錄十七、K8s 可觀測性:全鏈路追蹤1、Skywalking 初識1.1 為什么需要全鏈路追蹤平臺1.2 全鏈路追蹤核心組件及工作原理1.2.1 全鏈路追蹤核心概念1.2.2 全鏈路追蹤工作原理1.3 什么是Skywalking?1.4 Skywa…

2025 Gitee vs. GitLab:全面對比與選擇指南

在軟件研發持續加速、合規要求日益嚴格的背景下,選擇合適的代碼托管平臺成為團隊數字化能力建設的關鍵環節。尤其在中國本土市場,Gitee正憑借其深度本地化能力、全面生態整合和開源社區支撐,成為國內團隊首選的開發協作平臺。 一、Gitee&…

期貨反向跟單忌諱問題(一): 不斷調整盤手交易規則

在期貨反向跟單領域,不少運營者在摸著石頭過河的過程中,容易陷入一個致命誤區——對盤手交易規則的頻繁調整。這種看似“優化策略”的舉動,往往會讓整個跟單體系陷入惡性循環,最終偏離盈利初衷。期貨反向跟單的核心邏輯是&#xf…

Effective C++ 條款07:為多態基類聲明virtual析構函數

Effective C 條款07:為多態基類聲明virtual析構函數核心思想:當通過基類指針刪除派生類對象時,如果基類沒有虛析構函數,會導致派生類資源泄漏。因為此時只會調用基類的析構函數,而不會調用派生類的析構函數。 ?? 1. …

C++進階—C++11

第一章:C11簡介 在2003年C標準委員會曾經提交了一份技術勘誤表(簡稱TC1),使得C03這個名字已經取代了C98稱為C11之前的最新C標準名稱。不過由于C03(TC1)主要是對C98標準中的漏洞進行修復,語言的核心部分則沒有改動,因此人們習慣性…

把振動數據轉成音頻并播放

把振動數據轉聲音并播放 1、實現流程 安裝第三方庫: pip install numpy==1.23.5 pip install scipy==1.10.1 pip install sounddevice==0.4.6流程: 1、導入振動數據 2、數據歸一化到[-1, 1]范圍 3、重采樣到44.1kHz 4、播放音頻 5、保存音頻為WAV文件(可選)2、代碼示例 …

ServBay 1.15.0 更新,擁抱 Bun Deno 新生態

歷時一個月,ServBay迎來了1.15.0的更新。我們始終堅信,一個優秀的本地開發環境,不僅要穩定、高效,更要緊跟技術的演進脈搏。ServBay 的使命是為開發者掃清開發環境配置的障礙,讓您能聚焦于創造本身。 本次ServBay 1.1…

Java設計模式-通俗舉例

設計模式就像做菜的食譜,告訴我們遇到常見問題時該用什么"烹飪方法"。今天我就用最生活化的例子,帶大家輕松掌握23種設計模式的精髓。一、創建型模式(5種):怎么"造東西"1. 單例模式:公…

【跟我學YOLO】YOLO12(3)訓練自己的數據集

歡迎關注『跟我學 YOLO』系列 【跟我學YOLO】(1)YOLO12:以注意力為中心的物體檢測 【跟我學YOLO】(2)YOLO12 環境配置與基本應用 【跟我學YOLO】(3)YOLO12 訓練自己的數據集 【跟我學YOLO】&…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 微博輿情分析實現

大家好,我是java1234_小鋒老師,最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程,持續更新中,計劃月底更新完,感謝支持。今天講解微博輿情分析實現 視頻在線地址&#xff1…

【C++】手搓一個STL風格的vector容器

TOC(手搓一個STL風格的vector容器) 手搓一個STL風格的vector容器 github地址 有夢想的電信狗 0. 前言:動態數組的工程實踐 ? 在C標準庫中,vector容器作為最核心的序列式容器,其設計融合了動態數組的高效性與安全性。本文將通過完整實現…

24. 了解過 webp 嗎

總結 一種圖片格式 一、什么是 WebP? WebP(發音為 “weppy”)是由 Google 推出的一種現代圖片格式,支持有損壓縮和無損壓縮,旨在提供更小的文件體積和更高質量的圖像顯示。 它兼容常見的圖片功能,如&#…

【Unity筆記】Unity Camera.cullingMask 使用指南:Layer 精準控制、XR 多視圖與性能提升

Unity Camera.cullingMask 使用指南:Layer 精準控制、XR 多視圖與性能提升 關鍵詞:Unity、Camera、Culling Mask、Layer 控制、XR 渲染分離、UI 顯隱、性能優化 特別說明: 本文為近期項目所遇問題的總結,僅純文字記錄,…

攜帶參數的表單文件上傳 axios, SpringBoot

頁面上的表單如上圖, 點擊確定按鈕需要把參數統一傳給后端.前端代碼:表單的提交方法const submit async () > {const formData new FormData();formData.append("bookName", bookForm.value.bookName);formData.append("author", bookForm.value.auth…

黑馬JavaWeb【復習到哪更新到哪】

登錄認證(復習Javaweb的登錄校驗) 登錄功能 思路就是loginController->service層->mapper層,從數據庫中查找username和password是否和前端用戶提交的表單內容一致,一致就登錄成功,否則就返回登錄失敗的信息。 登…

NVMe高速傳輸之擺脫XDMA設計21:PCIe請求模塊設計(下)

在接收到請求總線接口的請求事務后,當請求類型的值為0時,表示通過PCIE硬核的配置管理接口發送請求,由于請求接口的接口和時序與配置管理接口基本一致,因此此時直接將請求接口信號驅動到配置管理接口完成請求的發送,請求…

機器學習sklearn:不純度與決策樹構建

不純度與決策樹構建不純度概念:決策樹通過不純度指標來選擇最佳分割節點和分枝方式不純度衡量節點中樣本類別的混雜程度不純度越低,節點中樣本類別越純凈,擬合效果越好常用不純度指標:信息熵(Entropy):基于信息論的概念…

rk356x IR紅外發射與接收之NEC協議

紅外接收紅外接收頭解碼器(紅外信號解碼,主要是NEC解碼)紅外發射器紅外發光二極管晶振NEC編碼組成共32位(4bit):由8位用戶碼1 8位用戶碼2 8位命令碼 8位命令碼反碼有時會存在按鍵一直按下的一幀信息&…

C++算法之單調棧

C算法中的單調棧:從入門到實戰指南 大家好!今天我們來聊聊C算法中一個超級實用的工具——單調棧。別被名字嚇到,它其實很簡單,就像排隊買奶茶一樣:隊伍總是從矮到高(或從高到矮)排得整整齊齊&a…

React入門指南——指北指南(第二節)

React 實踐:創建你的第一個待辦事項列表 在前面的章節中,我們學習了 React 的核心概念(組件、Props、State 等)。本節將通過一個實際案例——創建待辦事項列表(Todo List),幫助你鞏固這些概念,并掌握 React 中處理用戶交互、動態數據的基本方法。 案例目標 我們將構…