購物商城網(wǎng)站建設電商網(wǎng)站建設開發(fā)
最近在我的教學過程中,我的一個學生問了我一個問題,他們公司的一個接口參數(shù)值是列表,列表中值的數(shù)量有多有少,問我在 jmeter 中如何讓這個參數(shù)的值進行參數(shù)化?
看到這種問題,你的第一反應是什么?
寫 Java 代碼?我相信,如果你有一定的程序語言基礎,你肯定會想著寫代碼。因為代碼對你來說,不是難事。但是,如果你不懂代碼呢?
如果你不懂代碼,哪你肯定就會想著用 jmeter 自帶的 Random 函數(shù)。
但是,當你使用 Random 函數(shù),去生成隨機數(shù)的時候,如何生成 70 個隨機數(shù),用逗號連接,構成一個列表,這個事情難住你了。
下面,我就給不懂代碼的同學,講講如何使用jmeter 現(xiàn)有的元件來實現(xiàn)這樣一個需求。
首先,我們肯定知道,需要用 Random 函數(shù)和循環(huán)控制器。
在線程組下面添加一個循環(huán)控制器,循環(huán)控制器只需要設置一個循環(huán)次數(shù)就可以了。
如果你想學習自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網(wǎng)第一的自動化測試教程,同時在線人數(shù)到達1000人,并且還有筆記可以領取及各路大神技術交流:798478386?
【已更新】B站講的最詳細的Python接口自動化測試實戰(zhàn)教程全集(實戰(zhàn)最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細的Python接口自動化測試實戰(zhàn)教程全集(實戰(zhàn)最新版)共計200條視頻,包括:1、接口自動化之為什么要做接口自動化、2、接口自動化之request全局觀、3、接口自動化之接口實戰(zhàn)等,UP主更多精彩視頻,請關注UP賬號。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337
他的需求是至少 70 個,至于到底多少個沒有說,所以,這個循環(huán)次數(shù),我們就可以用 Random 隨機函數(shù),隨機一個大于等于 70 的數(shù)字就可以
${__Random(70,79,)}隨機函數(shù)中最大值,隨便寫大于 70 的數(shù)字。接下來就是造出列表中的第 1 個數(shù)。
定義什么元件來接收這個隨機數(shù)字呢?用戶定義變量, 還是用戶參數(shù)?
聽過我的課的同學,肯定都知道使用用戶參數(shù),如果不清楚,可以咨詢我們的工作人員。
用戶參數(shù),是一個前置處理器,所以,我們需要添加一個取樣器;我們目的是造數(shù)據(jù),這個取樣器并不需要發(fā)起請求,所以,取樣器我們可以使用‘調(diào)試取樣器’,生成如:
現(xiàn)在,運行腳本,你會發(fā)現(xiàn),在查看結(jié)果樹中,每個 ‘調(diào)試取樣器’ 看到 rd1 變量的值都不一樣,但是,每次的值都只有 1 個。
進一步分析需求,需求中,還說,每個值之間用逗號分隔,那我們看下,是否可以在 rd1 這個變量中添加一個‘逗號’呢。
添加了,運行,發(fā)起不管加載后面,還是在前面,都可以,jmeter 運行沒有出錯。
這個是什么意思呢?
我在一個函數(shù)變量的前面,或后面添加一個‘逗號’,居然,能正常!
‘逗號’,是一個字符嗎?是!哪這個算不算,兩個字符連接呢?
是的!jmeter 中,字符與字符相連,不需要用‘+’號,可以直接寫在一起,就連接了。
讓 rd1 的值,前面或后面,加符號,可以直接相連,哪我們可不可以把 rd1 與自己相連接呢?有了想法,哪就趕緊行動吧。是不是,再‘添加變量’,定義值為rd1{rd1}?
運行!!!
發(fā)現(xiàn),有 rd2 不管運行多少次,值都只有 2 個。
這是怎么回事呢?
我們來理解一下,變量 rd2 的值為?rd1{rd1} ,其實,是不是就是 rd2 的值,是調(diào)兩次 rd1,把兩個 rd1 連接在一起。如果這個能理解,哪是不是就能理解,不管我們循環(huán)多少次,rd2 的值都只有 2 個。
繼續(xù)想。
會不會想到,rd2 的值用 rd1 與 rd2 自身連接?
運行!
這次,我們看到 rd2 的值,在循環(huán)此次不一樣的時候,rd2 的值長度不一樣,在遞增。也就是說,這樣,我們可以造出幾十個類似的數(shù)據(jù)連接成的一個列表了。
但是,rd2 的值,最后一個是 ${rd2},這顯然又不符合我們的要求。怎么辦?
是不是想著又給 rd2 定義一個值?哪這次,繼續(xù)用用戶參數(shù),還是用用戶定義變量呢?
這次,我們用用戶定義變量!
楞楞的分不清 用戶定義變量 和 用戶參數(shù) 的用法,可以聯(lián)系我們的工作人員
運行!
現(xiàn)在,不管我們運行多少次,都能正常生成 rd2 的值了。
在這位同學的接口中,直接使用變量引用 ${rd2},是不是就搞定了。很簡單吧!不過,如果,你是一個追求完美主義者。
下面兩個問題,你可以思考下,在評論區(qū)留言和我探討一下哦。
問題一:
上述這種方法,生成的 rd2,其實是要比循環(huán)控制器的循環(huán)次數(shù)多 1 的,也就是說,如果循環(huán) 70 次,實際 rd2 是有 71 個值的。知道什么原因嗎?怎么驗證嗎?
問題二:
上述的方法,rd2 的值比循環(huán)次數(shù)多 1,如何使 rd2 值的數(shù)量與循環(huán)次數(shù)相同?