Jmeter-ForEach控制器(提取多個響應結果並依次傳參)

前言:大多數情況下,我們會從上一個請求的響應結果中提取某一個值,作爲第二個請求的參數進行傳參,但是有時候爲了提高測試效率,儘可能製造少的測試數據,我們需要從上一個請求的響應結果中獲取某一組相同類型的值作爲參數進行傳遞,此時,應該怎麼做呢?

應用場景:

步驟一:首先執行一個全局查詢,查詢出所有的值;

步驟二:提取出來步驟一的所有值的ID值,並作爲參數傳遞給第二個請求,依次查詢每一個ID的詳細信息。

解決思路:

思路一:直接使用正則表達式提取器將提取結果直接傳給第二個請求;

思路二:把提取的值取出來保存爲csv,然後對第二個請求參數化,去讀取這個csv的值(尚未研究如何保存提取的值);

思路一解決方案:

1.首先當然是前提步驟,需要執行第一個請求,並查看所有的響應結果:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
2.因爲第二個請求中,我們需要將上述響應結果中的ID值作爲參數進行傳遞,因此此時需要添加正則表達式提取器將結果進行提取
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
正則表達式進行如下設置:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
此時存在問題:運行完成後,發現第二次請求中參數處取值爲null。

或者他永遠只能取到響應結果中的第一個值,不能獲取所有的值。

這顯然不是我們想要的結果,通過與飛測小夥伴溝通後,需要添加一個元件,即ForEach控制器,即可有效結果此問題,因此進行如下改進:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
運行後,結果如下:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
至此,完美解決我們上述遇到的問題!
操作過程遇到的坑:

坑一:正則匹配有誤

響應結果爲:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
但是正則表達式爲:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
如此就會匹配出來一些我們不需要的值。

改進:做如下改進,即可獲得正確的值:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
學習:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
坑二:依次讀取響應數據,讀取失敗

改進:添加ForEach控制器解決。

學習:
Jmeter-ForEach控制器(提取多個響應結果並依次傳參)
參數:

Input Variable Prefix:輸入變量前綴,本例中爲:param

Output variable name:輸出變量名稱,提供給其它控件引用

Start index for loop(exclusive):循環開始的索引(默認從0開始,如果填寫是2,實際是從2+1個開始執行)

End index for loop(inclusive):循環結束的索引(默認從0開始,如果填寫是2,實際是從2+1個開始執行)

Add””before number:輸入變量名稱中是否使用“”進行間隔。

注:原創,轉載請說明出處!
https://www.cnblogs.com/diqitian/p/7249895.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章