二十二、JMeter實戰-跨線程組傳遞cookie


JMeter Cookie的使用場景


工作中的場景,比如某個系統,需要先登錄,然后進行添加門店、添加會員、添加會員等操作,這些操作可執行的前提是要先登錄。用戶在登錄的時通常會生成cookie,接下來的操作中都要帶上cookie。還會遇到一些場景,只需要登錄一次,接着進行其他操作,還有跨線程怎么傳輸cookie。



整體的思路:

  1. setUp線程組中登錄,登錄后使用正則把cookie取出來
  2. 通過BeanShell把變量設置為全局變量,供跨線程使用
  3. 在一個普通線程組中添加HTTP Cookie管理器,把登錄生成的cookie值引用到cookie管理器中



HTTP Cookie管理器定義

Cookie Manager元素具有兩個功能:

  1. 首先,它像Web瀏覽器一樣存儲和發送cookie。如果您有HTTP請求,並且響應包含cookie,則cookie管理器會自動存儲該cookie,並將其用於將來對該特定網站的所有請求。每個JMeter線程都有其自己的“ cookie存儲區”。因此,如果您正在測試使用cookie來存儲會話信息的網站,則每個JMeter線程將擁有自己的會話。請注意,此類cookie不會出現在Cookie Manager上,但可以使用“查看結果樹監聽器”看到它們。

  2. JMeter會檢查收到的Cookie是否對該URL有效。這意味着不會存儲跨域Cookie。如果您有錯誤的行為或希望使用跨域cookie,請定義JMeter屬性“ CookieManager.check.cookies = false ”。
    收到的Cookies可以存儲為JMeter線程變量。要將cookie保存為變量,請定義屬性“ CookieManager.save.cookies = true ”。另外,在存儲cookie名稱之前,它們以“ COOKIE_ ”為前綴(這避免了局部變量的意外損壞)。若要恢復原始行為,請定義屬性“ CookieManager.name.prefix = ”(一個或多個空格)。如果啟用,則名為TEST的cookie的值可以稱為$ {COOKIE_TEST}。

  3. 其次,您可以手動向Cookie管理器添加cookie。但是,如果執行此操作,則cookie將被所有JMeter線程共享。
    請注意,此類Cookie的創建時間是將來的很遠
    默認情況下, 具有空值的Cookies被忽略。這可以通過設置JMeter屬性來更改:CookieManager.delete_null_cookies = false。請注意,這也適用於手動定義的Cookie-更新后,所有此類Cookie都會從顯示中刪除。還要注意,cookie名稱必須唯一-如果用相同的名稱定義了另一個cookie,它將替換第一個。



總結一下:

  1. HTTP Cookie管理器可以自動管理cookie,前面有講解過,就把cookie管理器加上去就行了
  2. 也可以對cookie進行跨域使用,跨域使用就是前面所說的思路。



還是拿部署好的教育系統進行實戰講解:


一、實操


1.新增setUp線程組

setUp線程組下一節在做具體講解,setUp線程組執行一個初始化的操作,在普通線程組之前直接,而且只執行一次。比如現在我們就只需要登錄一次,然后接着操作學校列表接口、禁用、啟用學校等。



2.在setUp線程組中進行登錄

登錄后抓取cookie的值,通過抓包或者直接在查看結果樹中看,cookie的值在響應頭中。





3.通過正則提取cookie的值

通過正則提取cookie的值,關聯和正則的相應的說明在前面的文檔有詳細說明。






4.通過beanshell設置存放cookie的變量為全局變量

添加一個beanshell取樣器,在腳本中編寫:

${__setProperty(new,${c},)};

c是上面正則提取處理的變量值;new是新定義的全局變量;


要設置為全局變量才能跨線程使用





5.在另外的一個線程組中添加cookie管理器

在另外線程組中添加cookie管理器,把cookie的值引用過來

${__P(new)}

域和值一定要填寫正確,域填寫錯不起作用的。

“ domain ”(域)是服務器的主機名(不帶http://);該端口當前被忽略。域直接寫主機名就可以了。





6.在線程組中添加請求

在線程組中添加一個學校列表頁,接口都可以寫在這個線程組中,這些接口的共同特點就是都需要先登錄,才有權限訪問。
新增一個學校列表頁接口,請求成功。


免責聲明!

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



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