線程組之間的JMeter傳遞變量

下面,咱們將看看如何在線程組之間共享和傳遞變量。面試

在開發高級JMeter腳本時,極可能您將擁有多個線程組。每一個線程組將執行不一樣的請求。性能

一個很好的例子是咱們須要使用Bearer Tokens對用戶進行身份驗證。一個線程組執行身份驗證並保存令牌。另外一個線程組須要訪問此令牌並在另外一個請求中使用它。學習

所以,咱們須要一種在線程組之間傳遞變量的機制。測試

在JMeter中傳遞線程組之間的變量

對於此示例,咱們的測試計劃將具備兩個線程組。第一個線程組向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} 以下所示直接訪問它:

相關文章
相關標籤/搜索