JMeter中3種參數值的傳遞


小伙伴們在使用JMeter的過程中,肯定會遇到參數值傳遞的問題,下面來和大家總結下,在使用JMeter做壓力測試的時候,常見的3種參數值的傳遞是怎樣的。 

(一)從CSV文件讀取要批量輸入的變量 

假如我們要登錄的數據保存在login.csv文件里,數據如下: 

 

在JMeter中,我們需要添加CSV Data Set Config這個配置文件,如下圖: 

 

添加后,我們需要填寫其中的必要參數,如Filename和Variable Names: 

 

這里要注意下Variable Names里面的分隔符,為啥是用’,’號呢,因為csv文件login.csv用notepad++打開是如下所示,前面的字段是代表用戶的user,后面的字段代表的pwd: 

 

配置好CSV Data后,我們添加login的HTTP請求,截圖如下: 

 

其中用戶的user和pwd都是用${}包圍着的,這個是JMeter的語法規定。配置線程數為5,點擊啟動按鈕運行后,看到的結果如下: 

 

 

 

 

 

可以看到,login.csv文件中的2個字段被當作參數值進行了傳遞。 

(二)利用Cookie進行值的傳遞 

用JMeter進行接口調試時,有時候會遇到需要登錄的情況,如請求wetest的DataSearchAjax接口: 

 

返回的結果如下: 

 

出現這種情況的原因很明顯是未登錄引起的。一個較好的解決方法就是將登錄后的cookies保存下來,在訪問DataSearchAjax接口的時候,帶上用戶登錄后的cookies信息進行查看。 

在JMeter中,我們可以通過如下途徑進行cookies的傳遞,如下圖添加HTPP Cookie管理器: 

 

再給登錄的接口添加前置處理器Bean Shell PreProcessor,用來保存登錄的cookies: 

 

下面,我們要在Bean Shell PreProcessor里面添加我們的cookies值了。

import org.apache.jmeter.protocol.http.control.CookieManager

import org.apache.jmeter.protocol.http.control.Cookie

 

// 身份驗證必須的cookie值字段(可以詢問開發哪些是必須要校驗的字段)

// 可以在登錄后,點擊chrome里URL右邊的查看網站信息按鈕,查看所有的cookie值找到

// wetest的校驗字段是:csrftoken和sessionid

 

CookieManager manager = sampler.getCookieManager();

String csrftoken = "898b3ade5cb3744140503da601dee5d6793f82807cda581de9eb0982c05dfdc7a";  

//定義Cookie對象,其中參數:cookie的名稱, cookie值, cookie域, 路徑, 安全

Cookie cookie = new Cookie("csrftoken",csrftoken,"wetest.qq.com","/",false,0);

manager.add(cookie);

 

String sessionid = "0ir0hrodptu5qgv9qurk98c3l4"

Cookie cookie1 = new Cookie("sessionid",sessionid,"wetest.qq.com","/",false,0);

manager.add(cookie1);

添加完HTPP Cookie管理器和在前置處理器Bean Shell PreProcessor寫好腳本后,再次運行登錄接口和DataSearchAjax接口: 

 

 

 

 

 

 

可以看到,后面的請求攜帶了我們在Bean Shell PreProcessor腳本中保存的cookie值,並且成功返回了要查詢的數據。

(三)利用正則匹配提取上一個接口的返回數據作為下個請求的輸入 

用JMeter進行接口調試時,經常會遇到上一接口的返回值中的某個字段,要作為下一接口的輸入,這種情況下,我們需要利用正則匹配來提取我們需要的值。 

 

例如,若要提取相應數據中的goodpraise字段作為下個接口的輸入的話,可以在該接口請求后面添加正則表達式提取器: 

 

我們給正則表達式提取器命名為get_goodpraise,並填寫引用名稱、正則表達式、模板、匹配數值、缺省值,填寫后的如如下: 

 

填寫完成后,在添加新的HTTP請求,來測試提取到的goodpraise_name字段: 

 

這里要注意,${}里面填寫的一樣要是引用名稱的變量,保存后執行: 

 

若返回的請求goodpraise_name字段為-1,-1是我們設定的默認字段。那說明我們的正則表達式寫錯了,要仔細檢查下改成正確的正則表達式,再執行: 

 

可以看到,我們提取到的goodpraise_name字段成功傳遞給新的http請求。 

至此,JMeter中3種參數值的傳遞已全部講解完,小伙伴們學會了嗎~*(^_^)*~

本文由騰訊WeTest團隊提供,更多資訊可直接戳鏈接查看:http://wetest.qq.com/lab/ 


免責聲明!

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



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