下面,咱們將看看如何在線程組之間共享和傳遞變量。面試
在開發高級JMeter腳本時,極可能您將擁有多個線程組。每一個線程組將執行不一樣的請求。性能
一個很好的例子是咱們須要使用Bearer Tokens對用戶進行身份驗證。一個線程組執行身份驗證並保存令牌。另外一個線程組須要訪問此令牌並在另外一個請求中使用它。學習
所以,咱們須要一種在線程組之間傳遞變量的機制。測試
對於此示例,咱們的測試計劃將具備兩個線程組。第一個線程組向Web服務發出GET請求。而後,咱們使用JSON Extractor插件來解析JSON響應。網站
使用JSONPath,咱們提取特定鍵的值並將其保存爲JMeter變量。url
這就是咱們的JMeter請求的樣子:spa
上述請求的結果以JSON格式生成如下響應插件
和咱們的JSONPath提取第一個url看起來像線程
JSONPath查詢的值保存爲first_url
。此變量只能在同一個線程組中訪問,咱們能夠經過使用獲取其值${first_url}
。如今,咱們如何經過其餘線程組訪問此變量?code
答案是用於BeanShell Assertion
將變量保存爲全局屬性。經過這種方式,咱們能夠在線程組之間傳遞變量。
要添加BeanShell斷言,請右鍵單擊Test Plan> Add> Assertion> BeanShell Assertion
在咱們的BeanShell斷言中,咱們能夠輸入如下代碼
${__setProperty(first_url, ${first_url})};
如今在線程組2中,咱們可使用${__property(first_url)}
以下所示直接訪問此變量:
若是對軟件測試、接口測試、自動化測試、性能測試、LR腳本開發、面試經驗交流。感興趣能夠175317069,羣內會有不按期的發放免費的資料連接,這些資料都是從各個技術網站蒐集、整理出來的,若是你有好的學習資料能夠私聊發我,我會註明出處以後分享給你們。
或者,咱們可使用BeanShell PreProcessor來操做變量
在BeanShell PreProcessor中,咱們能夠經過使用來訪問從另外一個Thread組傳入的變量props.get("name_of_variable")
。而後咱們能夠執行一些String操做並將結果保存爲新變量。
在上面的例子中,咱們http://
從Thread Group 1傳遞的變量中刪除了,咱們將結果保存爲變量host
。
該變量host
如今是線程組2的本地變量,並使用${host}
以下所示直接訪問它: