当前位置:网站首页>Jmeter——ForEach Controller&Loop Controller
Jmeter——ForEach Controller&Loop Controller
2020-11-06 01:29:00 【itread01】
今天來分享下Jmeter中的2款迴圈控制器,ForEach Controller和Loop Controller,在使用上還是有所區別。 # ForEach Controller ## ForEach Controller簡介 ForEach Controller可以理解為迭代器(iterator),就是遍歷當前符合條件的所有資料,可用於Jmeter指令碼中的引數化。 我們直接看圖來說,如下所示:  如上所示,就是ForEach Controller的配置介面,介面有如下引數,一一講解: - Name:控制器名稱,可根據使用者需要任意填寫,也可不填 - Comments:使用者可根據需要任意填寫,也可不填 - Input variable prefix:輸入變數字首,資料來源:①使用者可以在“使用者自定義變數”中定義一組變數,迴圈控制器可以從中獲取到變數對應值,然後作為迴圈條件;②使用者可將提取的引數作為迴圈條件 - Start index for loop(exclusive): 開始迴圈欄位,迴圈變數下標起點(不包含) - End index for loop(inclusive):迴圈變數下標終點(包含) - Output variable name:輸出變數名稱,迴圈控制器生成的變數名稱,引用時填寫的引數名稱與輸出變數名稱一致 - Add "\_"before number?:數字之前加上下劃線“\_”,變數字首是否加“_”作為分隔符 ## ForEach Controller使用 我們直接通過案例來看,ForEach Controller如何使用。如上所述,變數的來源,取自於2種情況,那我們就一一瞭解下。不過在操作之前,各自要有Jmeter環境哦,環境配置可以參考以前博文。 ### 使用者定義變數 使用者定義變數是配置元件中的一個元件,可定義引數,便於後續介面直接使用,也是引數化的一種方式。元件新增入口如下所示:  我們來定義一組資料,我就以自己的部落格為例了,配置引數後,如下所示:  我們可以看出,變數名稱是有規律可循的,都是以wd_number開頭。或許有疑問,為什麼要這樣來設定,繼續往下看,馬上就能知道其作用了。 引數來源我們配置好後,這就需要在ForEach Controller配置對應資料了,跟上節奏一起來。 我們在之前ForEach Controller簡介中瞭解到,有個引數是`Input variable prefix 輸入變數字首`,在這裡輸入的內容就是`wd_number`。因為我們在使用者定義變數的元件中,配置的一組資料都是以此開頭的。 `Start index for loop(exclusive)`和`End index for loop(inclusive)`可以不配置,非必填資料。如果配置的話,需要注意的是,起始位是不包含的,這個到時候具體看案例截圖就清楚。 `Output variable name`輸出變數,這個引數是用於後續引數的引用名稱,比如我們平時用到的正則提取器,也是需要定義一個變數的,同一個意思。 `Add "\_"before number` 這個是看各自定義的變數名稱是怎樣的,變數間有`_`,則需要勾選,沒有的話,不勾選即可。 配置結果如下所示:  我們再用`outwd`變數引用到對應介面引數中即可,如下所示:  到現在為止,已經完成了配置步驟,我們直接來執行指令碼,看下執行結果,如下所示:  從執行的結果可以看出,我們並沒有設定迴圈次數,可為什麼是5次了,是因為我們設定的變數只有5個,並且是依次替換變數請求介面,這不就是普通的引數化嘛,是不是很簡單。 剛才的結果,我們沒有配置迴圈的起止位,現在我們配置上起止位,配置如下:  再次執行指令碼,看下是什麼個結果,如下所示:  從上圖執行的結果可以很清楚明瞭的看出其作用,起始位是`不包含`的,結束位是`包含`,配置為1和3,所以執行結果是取2和3的引數來請求介面。 ### 提取引數 提取引數同樣以部落格為例,每個人的部落格都有三個列表,閱讀排行榜、最新評論、推薦排行榜,剛好可以用於此demo。 可以看下資料,都是一個a標籤,如下所示:  通過使用者定義變數的方式,大家肯定有思路,提取引數如何實現了。 我們通過正則,將15條資料提取,並把對應引數配置到ForEach Controller即可。 那我們就先實現正則匹配這一步,正則相關知識自己另外補充,也可以參考我以前的博文,今天就不贅述了。我們觀察要提取的資料,都是有規律可循的,新增正則提取器,並配置如下所示:  這裡需要注意的是,`Match No.`,我們在這裡配置為`-1`,因為需要符合條件的所有值: - 配置為0,表示隨機值; - 配置為正整數,表示取匹配到的第幾個資料; - 配置為-1,表示取匹配到的所有資料。 正則配置好後,可以執行指令碼,看下是否正常提取到了資料,除錯也是寫指令碼的一部分工作。 我們再來配置ForEach Controller,如下所示:  再將輸出變數引用到對應介面引數中,如下所示:  我們來執行指令碼,看下整體效果,如下所示:  如上所示,分別請求了15次介面,使用起來是不是很方便,到此,是不是已經可以上手使用起來了,引數化就是這麼簡單。 # Loop Controller ## Loop Controller簡介 Loop Controller,功能擴充套件性不強,只能配置為無限迴圈和具體迴圈次數,主要用於測試介面重複呼叫的情況。 我們通過配置介面來了解下,如下所示:  根據上圖,來了解下引數配置: - Loop Controller:元件名稱 - Name:控制器名稱 - Comments:註釋 - Loop Count:設定執行次數,Infinite 勾選表示為永久執行 ## Loop Controller使用 Loop Controller使用很簡單,我們看了配置介面就很清楚,無非就是配置迴圈次數,或者一直無限迴圈。 ### 指定迴圈次數 我們通過案例來直觀的看下效果,我們配置迴圈次數為2,並執行指令碼,執行結果如下所示:  我們從上圖可知,迴圈次數為2,每個介面呼叫了2次。比如有些業務,後端介面有做重複呼叫校驗的,就可以通過這種方式來驗證了。 ### 無限迴圈 配置為無限迴圈的話,顧名思義,那肯定是一直會執行指令碼,除非手動停止,指令碼才會停止執行。 好了,今天的2種迴圈控制器就介紹到這裡,綜上所述,如果用於引數化的話,大家肯定會使用ForEach Controller。2種控制器,各有功能,各取所需,希望對有需要的博友有所
版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
https://www.itread01.com/content/1604584805.html
边栏推荐
- 8.2.3 implementation of interceptors (interceptors and filters) through handlerinterceptor
- es5 类和es6中class的区别
- 阻塞队列之LinkedBlockingQueue分析
- ES6精华:Proxy & Reflect
- 键盘录入抽奖人随机抽奖
- 使用Asponse.Words處理Word模板
- Skywalking系列博客2-Skywalking使用
- 50+开源项目正式集结完毕,百万开发者正在投票
- 8.2.2 inject bean (interceptor and filter) into filter through delegatingfilterproxy
- 直接保存文件至 Google Drive 并用十倍的速度下载回来
猜你喜欢
随机推荐
Dapr实现分布式有状态服务的细节
【事件中心 Azure Event Hub】Event Hub日誌種發現的錯誤資訊解讀
vite + ts 快速搭建 vue3 專案 以及介紹相關特性
如何选择分类模型的评价指标
VUEJS开发规范
JVM内存区域与垃圾回收
面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》
python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库
python 下载模块加速实现记录
Using tensorflow to forecast the rental price of airbnb in New York City
C语言中字符字符串以及内存操作函数
为了省钱,我用1天时间把PHP学了!
安装Consul集群
程序员自省清单
keras model.compile损失函数与优化器
ETCD核心機制解析
7.2.1 cache configuration of static resources
数据科学家与机器学习工程师的区别? - kdnuggets
python过滤敏感词记录
Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战