您好,登錄后才能下訂單哦!
這篇“Jmeter接口測試獲取Cookies的方法是什么”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Jmeter接口測試獲取Cookies的方法是什么”文章吧。
接口測試時常都需要登錄,請求方式(post),登錄常用的方法有通過獲取token,獲取session,獲取cookie,等等. 這幾種都有一個共同的特點(diǎn),有效期(expires).
Session是建立連接后session有效,斷開連接session失效, token有效期是服務(wù)端控制, cookie是用戶瀏覽訪問時被創(chuàng)建的,由服務(wù)器發(fā)送給客戶端使用,有效期長短和服務(wù)器相關(guān),不同的web服務(wù)器默認(rèn)值略有差異,在一個臨時會話周期內(nèi),cookie一般不會被持久化,也就是關(guān)閉瀏覽器或者退出登錄cookie失效.
如何獲取token, 我們之前的推文(Jmeter接口測試-正則表達(dá)式)里已經(jīng)介紹過,今天來講cookie,使用cookie既然有有效期,那退出或者其他情況使cookie失效了,在接口測試腳本中要一直去修改為最新的cookie,不是很惱人的一件事情嗎? 有沒有辦法一勞永逸呢,答案是肯定的.
還是從實(shí)例入手, 首先我們找一個已經(jīng)跑通的接口(原先cookie獲取是在自定義變量里寫死cookie值, 然后再傳給cookie manager), 在結(jié)果樹的請求->request Body中查找信息
從圖中可以看出, cookie data有幾個信息組成
username
SESSION
SERVERID
那這些信息去哪里獲取呢?
使用chrome的開發(fā)者工具查看, 在application標(biāo)簽下很容易就能找到上述信息
有了以上這些信息,那接下來的事情就好辦了, 兩種方式添加
1. http cookie manager(推薦)
2. http 信息管理器
在cookie 管理中添加需要存儲的cookie
然后把原先用自定義變量里的cookie值刪除(寫死的cookie值), 用這個方法去獲取cookie給同域名下的其他API使用, 即可非常輕松的執(zhí)行需要登錄的API, 細(xì)心的同學(xué)會發(fā)現(xiàn) cookie data里還有username和SESSION 怎么沒用到, 我這個實(shí)例中這兩個不用也可以正常執(zhí)行, 如果有需要自行加上即可, 至此有趣的cookie可一勞永逸的使用, 不必再為cookie過期而煩惱了, 不知道你學(xué)會了沒有, 在實(shí)際測試場景中,類似這樣的問題時常困擾著我們, 如何巧妙的使用方法去解決(偷懶法則), 學(xué)會偷懶的技術(shù)工程師才是一個合格的工程師.
作用:
1 發(fā)送請求,經(jīng)常要校驗(yàn)cookies信息
2 錄制的時使用的cookie管理器,只能在指定的域下面使用,如果服務(wù)器地址切換,發(fā)現(xiàn)發(fā)送請求時,就會出現(xiàn)no cookies
使用方法:
1 使用badboy錄制的腳本都帶了cookie管理器
2 使用jmeter的代理錄制腳本,提前設(shè)置好cookie管理器再進(jìn)行錄制
3 自己設(shè)置cookie管理器
前兩種的cookie管理器都有域名的限制,有時需要自己進(jìn)行修改
我一般使用代理錄制腳本,自己添加cookie管理器的方式進(jìn)行
步驟:
1 錄制腳本
2 修改cookie管理器,如果沒有域名切換的話,可以不用自己配置的
1)使用開發(fā)者工具,或者firefox的firebug插件獲取cookie信息。建議使用firebug這個配置和jmeter幾乎一樣。據(jù)說可以直接導(dǎo)入到j(luò)meter,但是我沒有導(dǎo)入成功,就自己配置了。
下面是開發(fā)者工具所看到的cookie信息
并不是所有的都需要配置發(fā)送到服務(wù)器。我的只配置了sf_session就ok了
域就是服務(wù)器的ip
這樣后面發(fā)送的所有請求都會自帶上這個cookie信息。
這里面的cookie可以通過正則表達(dá)式進(jìn)行提起,設(shè)置成變量
Cookie管理器,會默認(rèn)把服務(wù)端返回的cookie數(shù)據(jù)記錄下來
步驟:
1 先添加http cookie管理器,這時jmeter就會自動記錄下服務(wù)端返回的cookie信息
由于數(shù)據(jù)是保存在cookie里面,沒法通過正則表達(dá)式去提取
2 其實(shí)這個時候,jmeter發(fā)送請求,會默認(rèn)把cookie信息帶上,能解決大部分問題
3 但是我們這時又想用到cookie里面的某一個值的時候,就需要修改jmeter的設(shè)置了
在jmeter的安裝bin路徑下,
修改:jmeter.properties
#CookieManager behaviour - should Cookies be stored as #variables? #Default is false CookieManager.save.cookies=true //這個把前面的#去掉,
4 調(diào)用cookie里面某一個值
${COOKIE_某一個值名稱}
如上面的 sf_session就可以直接用${COOKIE_sf_session}調(diào)用。和自定義變量完全一樣
注意點(diǎn):必須是請求服務(wù)端以后,cookie管理器里面才會有數(shù)據(jù),一般是登陸時服務(wù)端返回會帶回cookie。之前cookie會一直為空
下面是我demo的截圖
提取成功圖片:
前置bs沒有cookie值
后置的bs有了cookie值
最近遇到的問題是,登錄需要驗(yàn)證碼,驗(yàn)證碼每次都變且無規(guī)律,所以錄制登錄接口就沒辦法錄制了。
于是就想著能不能直接在cookie管理器中保存我登錄后的信息,其他接口直接調(diào)用這個參數(shù)呢?經(jīng)過試驗(yàn),有的系統(tǒng)可以,有的不可以,不可以的還沒找到原因和解決辦法,先寫可以使用的步驟吧。
1、打開火狐瀏覽器,登錄要保存cookie信息的網(wǎng)頁并登錄成功;
2、打開調(diào)試模式,切換到存儲,打開cookie,然后右側(cè)紅框區(qū)域內(nèi)的所有數(shù)據(jù)就是cookie信息;
3、把這個表里的所有數(shù)據(jù)的名稱、域名、路徑、值都一一寫到cookie管理器里,如下圖jmeter的這個位置
4、然后,在jmeter中,添加http請求,把cookie管理器中的這些參數(shù),都當(dāng)成參數(shù)傳過去,假如cookie管理器中只有一個參數(shù)JSESSIONID,寫接口時,就需要把JSESSIONID當(dāng)成一個參數(shù)傳過去,如下圖
5、這樣就可以不需要登錄,直接調(diào)用登錄的cookie信息了
1、谷歌瀏覽器打開調(diào)試,然后提交登錄,獲取session
2、添加HTTP Cookie管理器,把session添加進(jìn)去:
3、添加響應(yīng)斷言
4、執(zhí)行,返回custname_0表示成功,custname_2表示失敗
新增客商有規(guī)則需要校驗(yàn),導(dǎo)致提交重復(fù)信息會失敗,只有第一次才會成功
注意:如果是在同一個線程組,根本不需要添加兩個cookies的參數(shù)值,只需要添加一個無參數(shù)值的空的http cookie管理器,去掉下圖的兩個SESSIONID變量值
下面是增加權(quán)限的截圖:
以上就是關(guān)于“Jmeter接口測試獲取Cookies的方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。