Jmeter-全局變量跨線程組使用


一、前言  

  前面講了如何使用正則表達式提取值,一般提取的值在同一個線程里,隨意哪個請求都是可以引用的,那如果別的線程組也想引用怎么辦呢?這時就涉及到一個全局變量的知識點了,話不多說,直接實例走起。

1、BeanShell創建全局變量(跨線程組):可以用Beanshell取樣器或者Beanshell后置處理器
1)創建一個局部的變量(線程組內):token
2)使用Beanshell調用創建的局部變量token,並將全局變量命名為newtoken,示例${__setProperty(newtoken,${token},)}
3)跨線程組調用全局變量
方法1:${__P(newtoken)}; //調用全局變量
方法2:${__property(newtoken)}; //也可以這樣調用全局變量,和上面的寫法是等價的
方法3:Beanshell前置處理器-將newtoken拿過來賦值給token1,然后可以${token1}引用
String a1=props.get("newtoken");
vars.put("token1",a1)

二、實例演示

1、在【登錄】線程組的[統一登錄]請求下,右鍵>添加>后置處理器>正則表達式,把統一登錄成功后的響應結果里的token用正則表達式提取出來,引用名稱是“token”。

表達式規則寫法為:"token":"(.*?)"

 2、在【登錄】線程組,右鍵>添加>取樣器>BeanShell 取樣器,將提取的token設置為全局變量newtoken。

Script的寫法為:${__setProperty(newtoken,${token},)}

3、在【xx系統】線程組,右鍵>添加>前置處理器>BeanShell PreProcessor,將全局變量newtoken拿過來賦值給token

Script的寫法為:

String a1=props.get("newtoken");
vars.put("token",a1)

4、好的,以上終於完事了,可以在【xx系統】線程組安心地引用token了,如下:

5、最后運行調試如下:(因涉及到信息安全問題,所以就大概截了下圖)

1)用Debug Sampler可以看到提取出來的token

2)【xx系統】線程組可正常引用【登錄】線程組的token,如圖

3)統一登錄成功跳轉到【xx系統】,登錄成功,如圖:

 

 

注:有人可能會好奇,這個請求下為什么會多了幾個子請求,哈哈,這涉及到重定向的知識了,大家可以自行百度下

補充個URL斷言:

 


免責聲明!

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



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