上次講了jmeter中提取接口參數的方法應用-後置處理器中的提取器,常用的3種提取器json提取器、正規表達式提取器、邊界提取器。
補充一下json提取器進階用法
1.json提取器固定提取清單資料
2.json提取器按條件提取清單資料,靈活
json提取器固定提取清單資料:
知道清單結果資料結構以後,加入要提取清單中某個清單中的參數值,可以這樣寫:
$.data.list[0].id
示例圖:
示例
json提取器按條件提取清單資料,文法:$.data.list[?(@.title=="兔頭")].id
這種方法比較靈活了,但是條件是固定的。
按條件提取接口傳回結果
下面開始本次的知識點講解,跨線程中的知識,涉及知識點為
1.BeanShell取樣器
2._setproperty() 設定全局屬性函數
3._property()或_P()函數,擷取全局屬性值
一、設定全局屬性,即全局變量
1.添加一個BeanShell取樣器
将哪個接口的資料設定全局變量就在哪個線程上面添加該取樣器,注意添加後他的位置在提取器下面。
添加BeanShell取樣器
添加BeanShell取樣器後
2.打開函數助手對話框,找到_setproperty()函數,将參數設定全局屬性
這裡會用到前面講的提取器知識,既然要将參數設定為全局變量,需要先得到接口傳回值。
打開函數助手對話框
設定全局屬性
3.将全局屬性函數粘貼到BeanShell取樣器的腳本下
BeanShell取樣器腳本
二、将全局變量添加到HTTP資訊頭管理器中
1.驗證全局屬性腳本是否成功提取到參數值
這裡需要注意在點選生成按鈕時,需要确定下接口請求時效,時間過去很久後,要先執行下接口得到傳回結果,最好清理一下緩存。再次來到函數助手對話框,找到_property()函數或_P()函數。
_property()函數
結果驗證1
_P()函數結果驗證2
2.在資訊頭管理器中将擷取的登入接口傳回的sessionId作為全局變量
HTTP資訊頭管理器
清理全部緩存
3.建立線程組驗證接口是否可正常使用
4.結果驗證-檢視結果樹中檢視請求頭資訊
檢視結果樹結果
另外,如果要将登入接口或者上一步接口的參數設定為全局變量,可以把提取的參數設定為全局變量,直接使用函數即可。如我的案例:
我的案例
以上就是關于全局變量中用到的知識,需要建立一個BeanShell()取樣器,這裡的腳本是存放的_setproperty()函數擷取的參數,使用時是通過_property()函數或_P()函數(兩者選擇其一即可)。
掌握這種方法後後面不管建立多少線程隻要遇到有接口依賴時,都可以用此方法實作。