jmeter做介面測驗程序中,經常遇到請求需要用到token的時候,我們可以把回傳token的介面用后置處理器提取出來,但是在這種情況下,只能適用于當前的執行緒組,其他執行緒組無法參考到提取的token變數值,所以必須要生成全域變數讓測驗計劃下的所有執行緒組都可以參考變數,
同一個執行緒組下提取token并參考
1、執行獲取token介面(登錄介面),在查看結果樹這里,使用$符號提取token值
$.根節點,$.data.token 表示提取根節點下的data節點下的token節點的值
2、使用json提取器,提取登錄介面回應結果中的access_token,保存在變數token中
變數路徑就是把在結果樹提取的路徑寫上
3、可以使用除錯取樣器查看提取的token值是否正確
4、下一個介面(串列查詢介面)中,需要使用上個登錄介面回傳的token值,使用${token}參考
不同執行緒組下提取token并參考
1、使用json提取器提取登錄介面回應結果中的access_token,保存在變數token中,操作與上文提到的一樣,
2、使用函式助手對話框的setProperty函式,有兩個輸入框要填寫(屬性名稱和Value of property),屬性名稱填寫一個全域變數名,Value of property填寫json提取器提取的access_token(json提取器提取到的access_token賦值給了變數token,此處參考變數${token}得到)
3、在json提取器下添加一個后置處理器BeanShell PostProcessor;
4、把生成的setProperty函式(${__setProperty(new_token,${token},)})復制到BeanShell PostProcessor中,此時已經把介面需要用到的access_token生成了并保存在全域變數new_token中,
5、參考該全域變數有兩種方式
(1)使用函式助手中的property函式,只填寫屬性名稱對應的輸入框:全域變數名new_token
把生成的結果填寫到串列查詢介面需要參考的地方
(2)使用函式助手中的P函式,只填寫屬性名稱對應的輸入框:全域變數名new_token
把生成的結果填寫到串列查詢介面需要參考的地方
總結
${__setProperty()}與${__property()}/${__P()}一起配合使用,setProptety等于把值拿出來, __property/__P 對值進行使用
__P是__property函式的簡化版,舉個例子:${__P(prop1)}會回傳屬性prop1的值;${__P(prop1,123)} 會回傳屬性prop1的值,如果prop1未定義值,則回傳123;
__property和__P之間的區別:用法上__property函式僅僅是比__P函式多了一個可以存值的變數,舉個__property用法例子:${__property(pro,var,abcd)}會回傳pro的值,如果pro未定義值則會回傳abcd,同時會將pro的值存到變數var中
注意事項
如果遇到跨執行緒組呼叫引數值不是token值而是變數名時且登錄介面能夠正常使用的情況下,請檢查執行緒組設定
原因:如果不設定此項,會導致jmeter測驗計劃下所有添加的執行緒組同步運行,導致token還沒獲取出來就已經在呼叫了,導致獲取值時出現錯誤
我是測驗要用手,一個陪你成長,實實在在分享 測驗干貨職場經驗的人,歡迎關注!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551320.html
標籤:其他
上一篇:打工人逃不開「單人單崗」
下一篇:返回列表
