jmeter練習(5)關聯升級版—ForEach控制器(提取多個響應結果並依次傳參)


 

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

 

應用場景:

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

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

 

解決思路:

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

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

 

思路一解決方案:

 

1.首先當然是前提步驟,需要執行第一個請求,並查看所有的響應結果:

 

2.因為第二個請求中,我們需要將上述響應結果中的ID值作為參數進行傳遞,因此此時需要添加正則表達式提取器將結果進行提取

 

 

正則表達式進行如下設置:

 

 

此時存在問題:運行完成后,發現第二次請求中參數處取值為null。

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

 

這顯然不是我們想要的結果,通過與飛測小伙伴溝通后,需要添加一個元件,即ForEach控制器,即可有效結果此問題,因此進行如下改進:

 

 

 

 

運行后,結果如下:

 

 

至此,完美解決我們上述遇到的問題!

 

操作過程遇到的坑:

坑一:正則匹配有誤

響應結果為:

 

 

但是正則表達式為:

 

 

如此就會匹配出來一些我們不需要的值。

改進:做如下改進,即可獲得正確的值:

 

 

 

學習:

 

 

坑二:依次讀取響應數據,讀取失敗

改進:添加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:輸入變量名稱中是否使用“”進行間隔。 

注:原創,轉載請說明出處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM