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