
最近在我上班時,我的一個朋友問了我一個問題,他們公司的一個介面引數值是串列,串列中值的數量有多有少,問我在 jmeter 中如何讓這個引數的值進行引數化?

看到這種問題,你的第一反應是什么?
寫 Java 代碼?我相信,如果你有一定的程式語言基礎,你肯定會想著寫代碼,因為代碼對你來說,不是難事,但是,如果你不懂代碼呢?
如果你不懂代碼,哪你肯定就會想著用 jmeter 自帶的 Random 函式,
但是,當你使用 Random 函式,去生成亂數的時候,如何生成 70 個亂數,用逗號連接,構成一個串列,這個事情難住你了,
下面,我就給不懂代碼的同學,講講如何使用jmeter 現有的元件來實作這樣一個需求,
首先,我們肯定知道,需要用 Random 函式和回圈控制器,
在執行緒組下面添加一個回圈控制器,回圈控制器只需要設定一個回圈次數就可以了,

他的需求是至少 70 個,至于到底多少個沒有說,所以,這個回圈次數,我們就可以用 Random 隨機函式,隨機一個大于等于 70 的數字就可以
${__Random(70,79,)}隨機函式中最大值,隨便寫大于 70 的數字,接下來就是造出串列中的第 1 個數,
定義什么元件來接收這個亂數字呢?用戶定義變數, 還是用戶引數?
聽過我的課的同學,肯定都知道使用用戶引數,如果不清楚,可以咨詢我們的作業人員,
用戶引數,是一個前置處理器,所以,我們需要添加一個取樣器;我們目的是造資料,這個取樣器并不需要發起請求,所以,取樣器我們可以使用‘除錯取樣器’,生成如:

現在,運行腳本,你會發現,在查看結果樹中,每個 ‘除錯取樣器’ 看到 rd1 變數的值都不一樣,但是,每次的值都只有 1 個,
進一步分析需求,需求中,還說,每個值之間用逗號分隔,那我們看下,是否可以在 rd1 這個變數中添加一個‘逗號’呢,

添加了,運行,發起不管加載后面,還是在前面,都可以,jmeter 運行沒有出錯,
這個是什么意思呢?
我在一個函式變數的前面,或后面添加一個‘逗號’,居然,能正常!
‘逗號’,是一個字符嗎?是!哪這個算不算,兩個字符連接呢?
是的!jmeter 中,字符與字符相連,不需要用‘+’號,可以直接寫在一起,就連接了,
讓 rd1 的值,前面或后面,加符號,可以直接相連,哪我們可不可以把 rd1 與自己相連接呢?有了想法,哪就趕緊行動吧,是不是,再‘添加變數’,定義值為rd1{rd1}?

運行!!!

發現,有 rd2 不管運行多少次,值都只有 2 個,
這是怎么回事呢?
我們來理解一下,變數 rd2 的值為 rd1{rd1} ,其實,是不是就是 rd2 的值,是調兩次 rd1,把兩個 rd1 連接在一起,如果這個能理解,哪是不是就能理解,不管我們回圈多少次,rd2 的值都只有 2 個,
繼續想,
會不會想到,rd2 的值用 rd1 與 rd2 自身連接?

運行!

這次,我們看到 rd2 的值,在回圈此次不一樣的時候,rd2 的值長度不一樣,在遞增,也就是說,這樣,我們可以造出幾十個類似的資料連接成的一個串列了,
但是,rd2 的值,最后一個是 ${rd2},這顯然又不符合我們的要求,怎么辦?
是不是想著又給 rd2 定義一個值?哪這次,繼續用用戶引數,還是用用戶定義變數呢?
這次,我們用用戶定義變數!
楞楞的分不清 用戶定義變數 和 用戶引數 的用法,可以留言~

運行!

現在,不管我們運行多少次,都能正常生成 rd2 的值了,
在這個朋友的介面中,直接使用變數參考 ${rd2},是不是就搞定了,很簡單吧!不過,如果,你是一個追求完美主義者,
最后:如果對軟體測驗、介面測驗、自動化測驗、技術同行、持續集成、面試經驗交流,感興趣可以進到 902061117,群內會有不定期的分享測驗資料,
如果文章對你有幫助,麻煩伸出發財小手點個贊,感謝您的支持,你的點贊是我持續更新的動力,
好文推薦
2021軟體測驗工程師面試題匯總(內含答案)-看完BATJ面試官對你豎起大拇指!
什么樣的人適合從事軟體測驗作業?
軟體測驗和軟體開發哪個發展更好
那個準點下班的人,比我先升職了…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294645.html
標籤:其他
