jmeter的線程組之間是相互獨立的,各個線程組互不影響,所以線程組A中輸出的參數,是無法直接在線程組B中被調用的。
但是有時為了方便管理,我們可能是把各個接口單獨存放在不同的線程組中。拿Cookie來說,雖然每一個線程組中我們也可以在放一個登錄請求,然后輸出一個Cookie供此線程組使用,但這樣就比較繁瑣且冗余。此時我們就可以使用跨線程組傳遞參數來解決這樣的問題 ;
思路:將某一線程組內的變量通過“__setProperty”函數設置成jmeter的全局變量,在另一線程組中通過“${__P(parameters,)}”函數調用即可。
說明:jmeter本身的內置函數中,“__setProperty ” (${__setProperty(newtoken,${cookieKey},)})函數可以把某參數的值設置成jmeter本身的內置屬性,而jmeter的內置屬性是所有線程組都可以調用的,是全局變量。各個線程組調用時,只需使用調用jmeter屬性的函數“${__P(parameters,)}”來調用相應的屬性即可。
1.在http請求下添加正則表達式提取器 :
2.在請求下再添加Bean Shell PostProcessor(bean shell后置處理器) ;
Parametres:把需要操作的參數傳遞給Bean Shell PostProcessor。前面提取出來的cookie的值,就把參數cookie寫入
Script: string cookie=bsh.args[0]; 把Bean Shell PostProcessor接收到的參數值,賦值給某參數。0是第一個值。
${__setProperty(newcookie,${cookie},)}; 調用函數__setProperty,把Bean Shell PostProcessor中的參數cookie的值賦值給newcookie,並設置newcookie為jmeter內置屬性。
2.其他線程組中引用----${__P(newcookie,)}