JMeter實現動態關聯——兩個接口在不同的線程組


【業務場景】

用戶輸入正確的用戶名及密碼登錄系統,若該登錄用戶存在多個公司則需要選擇相應的公司進入系統(若僅有一家公司則直接進入系統),可瀏覽公司相關產品信息。

【實現邏輯】

用戶登陸成功后首先會獲取一個token值,出於安全機制會同步提供一個access_token。登錄時選擇公司及進入系統后的操作,如瀏覽產品會校驗token值與access_token值是否正常。

兩者均正常,則可操作成功,但未傳token值與access_token值或其失效的話,后續操作失敗。

【兩個接口在同一個線程組】

如果兩個接口在同一個線程組中,JMeter實現動態關聯比較簡單,通過添加Http信息頭管理器可以完成。

如下圖所示,登錄選擇公司時沒有傳相應token及access_token,導致選擇公司接口執行失敗,后續產品瀏覽相關操作也同樣失敗。

 

 我們看下HTTP信息頭管理器中的內容,通過變量${token}獲取登錄請求下的token值,通過${token_tpye}${access_token}獲取AccessToken請求下對應token類型及access_token值。

 

 啟用HTTP信息頭管理器后,再次執行可以正常通過。

 

 

_________________________________________________________________________________分割線_______________________________________________________________________________________________________

【思考】

如果登錄系統與瀏覽產品不在一個線程組下,那如何實現參數的動態關聯呢?

今天在學到這塊的時候,總結了下大致思路,不足之處希望大家指正。

【兩個接口不在同一個線程組】

現在登錄系統與瀏覽產品不在同一個線程組下,如果按照之前那種處理方式,添加一個HTTP信息頭管理器執行發現仍然報401錯誤,如圖所示。

 

 【解決思路】

1.先提取上一個接口中的token與access_token值;

2.將提取出來的token與access_token設為全局變量;

3.同時需要用到Beanshell取樣器,目的用來執行一段java代碼;

4.這里需要用到函數助手__setProperty將token與access_token設為全局變量,將生成的代碼

${__setProperty(Token,${token},)}

${__setProperty(Token_Type,${token_type},)}

${__setProperty(Access_Token,${access_token},)}

 放入Beanshell取樣器中;

5.在下一個接口中通過函數助手__property 生成代碼

${__property(Token,,)}

${__property(Token_Type,,)}

${__property(Access_Token,,)}

6.在下一個接口中,HTTP信息頭管理器中通過第5步生成的代碼獲取響應的token與access_token值。

【操作步驟】

1.通過函數助手__setProperty將token,token_type,access_token設置為全局變量,並放入BeanShell取樣器中;

 

 

2.通過函數助手__property生成可被調用的Token、Token_Type、Access_Token表達式和對應名稱,在下一個接口中,HTTP信息頭管理器中調用相應的值。

 

 至此,接口已經調試通過。

 

 該文章僅作為個人學習過程的總結,如有理解錯誤的地方歡迎大家指正,避免誤人子弟,哈哈哈。

 


免責聲明!

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



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