天天看點

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

作者:京郊一漂

上次講了jmeter中提取接口參數的方法應用-後置處理器中的提取器,常用的3種提取器json提取器、正規表達式提取器、邊界提取器。

補充一下json提取器進階用法

1.json提取器固定提取清單資料

2.json提取器按條件提取清單資料,靈活

json提取器固定提取清單資料:

知道清單結果資料結構以後,加入要提取清單中某個清單中的參數值,可以這樣寫:

$.data.list[0].id

示例圖:

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

示例

json提取器按條件提取清單資料,文法:$.data.list[?(@.title=="兔頭")].id

這種方法比較靈活了,但是條件是固定的。

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

按條件提取接口傳回結果

下面開始本次的知識點講解,跨線程中的知識,涉及知識點為

1.BeanShell取樣器

2._setproperty() 設定全局屬性函數

3._property()或_P()函數,擷取全局屬性值

一、設定全局屬性,即全局變量

1.添加一個BeanShell取樣器

将哪個接口的資料設定全局變量就在哪個線程上面添加該取樣器,注意添加後他的位置在提取器下面。

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

添加BeanShell取樣器

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

添加BeanShell取樣器後

2.打開函數助手對話框,找到_setproperty()函數,将參數設定全局屬性

這裡會用到前面講的提取器知識,既然要将參數設定為全局變量,需要先得到接口傳回值。

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

打開函數助手對話框

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

設定全局屬性

3.将全局屬性函數粘貼到BeanShell取樣器的腳本下

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

BeanShell取樣器腳本

二、将全局變量添加到HTTP資訊頭管理器中

1.驗證全局屬性腳本是否成功提取到參數值

這裡需要注意在點選生成按鈕時,需要确定下接口請求時效,時間過去很久後,要先執行下接口得到傳回結果,最好清理一下緩存。再次來到函數助手對話框,找到_property()函數或_P()函數。

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

_property()函數

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

結果驗證1

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

_P()函數結果驗證2

2.在資訊頭管理器中将擷取的登入接口傳回的sessionId作為全局變量

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

HTTP資訊頭管理器

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

清理全部緩存

3.建立線程組驗證接口是否可正常使用

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

4.結果驗證-檢視結果樹中檢視請求頭資訊

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

檢視結果樹結果

另外,如果要将登入接口或者上一步接口的參數設定為全局變量,可以把提取的參數設定為全局變量,直接使用函數即可。如我的案例:

jmeter接口應用4:jmeter跨線程方法BeanShell()取樣器

我的案例

以上就是關于全局變量中用到的知識,需要建立一個BeanShell()取樣器,這裡的腳本是存放的_setproperty()函數擷取的參數,使用時是通過_property()函數或_P()函數(兩者選擇其一即可)。

掌握這種方法後後面不管建立多少線程隻要遇到有接口依賴時,都可以用此方法實作。