JMeter中3种参数值的传递
小伙伴們?cè)谑褂肑Meter的過(guò)程中,肯定會(huì)遇到參數(shù)值傳遞的問(wèn)題,下面來(lái)和大家總結(jié)下,在使用JMeter做壓力測(cè)試的時(shí)候,常見(jiàn)的3種參數(shù)值的傳遞是怎樣的。?
(一)從CSV文件讀取要批量輸入的變量?
假如我們要登錄的數(shù)據(jù)保存在login.csv文件里,數(shù)據(jù)如下:?
?
在JMeter中,我們需要添加CSV Data Set Config這個(gè)配置文件,如下圖:?
?
添加后,我們需要填寫(xiě)其中的必要參數(shù),如Filename和Variable Names:?
?
這里要注意下Variable Names里面的分隔符,為啥是用’,’號(hào)呢,因?yàn)閏sv文件login.csv用notepad++打開(kāi)是如下所示,前面的字段是代表用戶的user,后面的字段代表的pwd:?
?
配置好CSV Data后,我們添加login的HTTP請(qǐng)求,截圖如下:?
?
其中用戶的user和pwd都是用${}包圍著的,這個(gè)是JMeter的語(yǔ)法規(guī)定。配置線程數(shù)為5,點(diǎn)擊啟動(dòng)按鈕運(yùn)行后,看到的結(jié)果如下:?
?
?
?
?
?
可以看到,login.csv文件中的2個(gè)字段被當(dāng)作參數(shù)值進(jìn)行了傳遞。?
(二)利用Cookie進(jìn)行值的傳遞?
用JMeter進(jìn)行接口調(diào)試時(shí),有時(shí)候會(huì)遇到需要登錄的情況,如請(qǐng)求wetest的DataSearchAjax接口:?
?
返回的結(jié)果如下:?
?
出現(xiàn)這種情況的原因很明顯是未登錄引起的。一個(gè)較好的解決方法就是將登錄后的cookies保存下來(lái),在訪問(wèn)DataSearchAjax接口的時(shí)候,帶上用戶登錄后的cookies信息進(jìn)行查看。?
在JMeter中,我們可以通過(guò)如下途徑進(jìn)行cookies的傳遞,如下圖添加HTPP Cookie管理器:?
?
再給登錄的接口添加前置處理器Bean Shell PreProcessor,用來(lái)保存登錄的cookies:?
?
下面,我們要在Bean Shell PreProcessor里面添加我們的cookies值了。
import org.apache.jmeter.protocol.http.control.CookieManager;?
import org.apache.jmeter.protocol.http.control.Cookie;?
?
// 身份驗(yàn)證必須的cookie值字段(可以詢問(wèn)開(kāi)發(fā)哪些是必須要校驗(yàn)的字段)
// 可以在登錄后,點(diǎn)擊chrome里URL右邊的查看網(wǎng)站信息按鈕,查看所有的cookie值找到
// wetest的校驗(yàn)字段是:csrftoken和sessionid
?
CookieManager manager = sampler.getCookieManager();
String csrftoken = "898b3ade5cb3744140503da601dee5d6793f82807cda581de9eb0982c05dfdc7a"; ?
//定義Cookie對(duì)象,其中參數(shù):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寫(xiě)好腳本后,再次運(yùn)行登錄接口和DataSearchAjax接口:?
?
?
?
?
?
?
可以看到,后面的請(qǐng)求攜帶了我們?cè)贐ean Shell PreProcessor腳本中保存的cookie值,并且成功返回了要查詢的數(shù)據(jù)。
(三)利用正則匹配提取上一個(gè)接口的返回?cái)?shù)據(jù)作為下個(gè)請(qǐng)求的輸入?
用JMeter進(jìn)行接口調(diào)試時(shí),經(jīng)常會(huì)遇到上一接口的返回值中的某個(gè)字段,要作為下一接口的輸入,這種情況下,我們需要利用正則匹配來(lái)提取我們需要的值。?
?
例如,若要提取相應(yīng)數(shù)據(jù)中的goodpraise字段作為下個(gè)接口的輸入的話,可以在該接口請(qǐng)求后面添加正則表達(dá)式提取器:?
?
我們給正則表達(dá)式提取器命名為get_goodpraise,并填寫(xiě)引用名稱、正則表達(dá)式、模板、匹配數(shù)值、缺省值,填寫(xiě)后的如如下:?
?
填寫(xiě)完成后,在添加新的HTTP請(qǐng)求,來(lái)測(cè)試提取到的goodpraise_name字段:?
?
這里要注意,${}里面填寫(xiě)的一樣要是引用名稱的變量,保存后執(zhí)行:?
?
若返回的請(qǐng)求goodpraise_name字段為-1,-1是我們?cè)O(shè)定的默認(rèn)字段。那說(shuō)明我們的正則表達(dá)式寫(xiě)錯(cuò)了,要仔細(xì)檢查下改成正確的正則表達(dá)式,再執(zhí)行:?
?
可以看到,我們提取到的goodpraise_name字段成功傳遞給新的http請(qǐng)求。?
至此,JMeter中3種參數(shù)值的傳遞已全部講解完,小伙伴們學(xué)會(huì)了嗎~*(^_^)*~
本文由騰訊WeTest團(tuán)隊(duì)提供,更多資訊可直接戳鏈接查看:http://wetest.qq.com/lab/?
轉(zhuǎn)載于:https://www.cnblogs.com/ceshi2016/p/6029407.html
總結(jié)
以上是生活随笔為你收集整理的JMeter中3种参数值的传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Apache配置HTTPS功能
- 下一篇: 基于python的request库,模拟