本文為原創,碼字不易,轉載請注明,謝謝!
問題
在用Jmeter做接口測試時,需要傳遞登用戶錄后的token——通過請求頭部傳遞,希望在一個線程中,通過動態修改token的值來驗證不同的用戶下,接口返回的信息是否正確。
前提
- 在setUp Thread Group調用了兩次登錄接口,分別將user_1和user_2的token保存為全局變量User_1_token和User_2_token(用全局變量為了方便多線程組調用)
- Jmeter版本為3.2
動態傳遞token
-
新建一個變量user_token,為了方便給了一個默認值1(根據實際來吧,也可以不給)定義變量
- 創建線程組,添加 HTTP信息頭管理器,調用user_token變量
添加HTTP信息頭管理器 - 添加要測試的接口(http請求)
- 添加前置處理器Bean Shell PreProcessor,修改user_token的值為已獲取的user_1_token
添加前置處理器在這個地方踩了坑,參考了網上的資料,開始是這樣寫的: String token = ${__P(user_1_token,)}; vars.put("user_token", token); 結果請求中傳的值是我設置的默認值,折騰了好久,把第一行換成 String token = bsh.args[0]; 就OK了(不要問我為什么,我也還沒搞明白^~~^) ```
- 一個用戶的調通了,接下來需要將user_token的值修改為user_2_token,再調用測試接口。開始的思路是重復步驟4,將user_1_token改為user_2_token后,請求接口,結構是這樣的:
user_1_token to user_token HTTP請求 user_2_token to user_token HTTP請求
添加if控制器
-
最后做了下優化,結構如下:image.png