當遇到如跨線程組調用變量等情況,需要設置全局變量。
1、打開函數助手

輸入需要的值然后點擊生成按鈕,或者直接使用${__setProperty(newuserid,${userid},)}的格式

設置局部變量userid和token為全局變量並在另一線程中調用,調用方式見下

${__property(變量名)}
業務場景
一、登錄系統后進行商品購買,進行做接口並發。
1、首先分了兩個線程組login、pay_buy_finish 如圖:
2、獲取接口A正則表達式提取的session_sid作為全局變量,login線程只運行1次。如圖:
3、把獲取的sid 作為全局變量傳遞給線程組pay_buy_finish 中的請求使用:如圖:
4、運行結果是這樣:
線程組login 運行1次
pay_buy_finish運行5次
4次錯誤結果:
1次正確結果:
線程組pay_buy_finish總共運行5次,其中4次取值都不正確,只有1次取值正確。 如果有同學知道原因的請留言!
「原創聲明:保留所有權利,禁止轉載」
TesterHome 為用戶提供「保留所有權利,禁止轉載」的選項。 除非獲得原作者的單獨授權,任何第三方不得轉載標注了「原創聲明:保留所有權利,禁止轉載」的內容,否則均視為侵權。 具體請參見
TesterHome 知識產權保護協議。
圖形界面沒關閉過的情況下,上次運行時的__setProperty會一直在,比如設置了屬性A=11;下次運行的時候初始A就=11,然后才是被重新賦值,看你的查看結果樹是在2個線程組下的,你可以把它拉到外面,看下login、pay_buy_finish的執行順序,如果是這個原因,可以把login改成setup的
我在nogui 下運行也是如此,貌似和關閉圖形界面沒關系
另外我還有一個問題想要請教:設置全局變量后,在其他線程組中可以使用使用__property獲取到該全局變量,可是該全局變量如何在beanshell中使用呢?
Mr.W 關閉了討論
08月15日 12:50
Mr.W 重新開啟了討論
08月15日 13:22
${__property (x)}也可以直接用在beanShell中的,但是就是簡單的替換,我覺得用props.get("x")會更加安全,否則x屬性值有特殊字符時,遇到一些邏輯處理可能就會有問題,比如字符串相加等,beanShell窗口最下面有說明的有哪些可以用的內置對象
setup中定義全局變量x,然后在其他線程組中beanshell里直接使用${__property (x)}會報錯: Attempt to access property on undefined variable or class name ,使用props.get("x"),提示“ Undefined argument: x”
之前遇到過這個問題,我的解決方式是:在beanshell中設置參數:${__property(x)},然后在beanshell script中使用bsh.args[0]進行獲取,可是我不是很喜歡這種方式~~
props.get("x") 你這個報錯的話Undefined argument: x
檢查下是不是沒加引號?