Jmter實現跨線程組共享cookie
場景:
測試需要登錄的接口時,只需要在一個線程組中添加http cookie管理器就可以實現。
此時進行壓測,比如用戶並發數100 ,相當於調用100次登錄接口和100次需測試接口。但是在實際場景中,只需要調用1次登錄接口,此時需要把登錄和被測接口的線程分開,並實現多線程共享cookie。
解決方法
-
創建setup線程,添加登錄的http請求、添加察看結果樹,執行后在結果樹中查看登錄接口返回的cookie。返回形式有兩種:Response headers、Response body。本文講解返回的cookie在Response headers中。有些會用token ,返回在response body。
-
在登錄的http請求下創建后置處理器- -正則表達式提取器,提取headers中的cookie信息。
引用名稱: jsession
正則表達式: Set-Cookie:(.*)
模板: $ 1$
匹配數字: 1
缺省值: error
- 添加取樣器-調試取樣器,用於校驗正則表達式取到的cookie是否正確。( 運行后可查看到)
- 確認cokkie取值正確后,在登錄請求下添加后置處理--BeanShel后置處理程序。將cookie值改為全局量,如圖。
格式: $ {_ setProperty(轉換成全局變量后的引用名 ,${正則表達式定義的變量名},)}
- 以上完成登錄的線程組后,添加第2個線程組,添加被測接口的http請求,添加配置元件-http信息頭管理器,設置cookie的值: ${_ _property(JSESSIONID)。
這一步在其他教程上看到過是添加在http cookie管理器中,但是我沒有實現。
- 設置登錄的線程數1 ,需測試接[的線程數2 ,運行后可看到被測接口的Request Body中有Cookie Data ,並且值與登錄接口返回的信息頭中的set-Cookie-致。