1. 程式人生 > 其它 >JMeter筆記:前置處理器-BeanShell預處理程式

JMeter筆記:前置處理器-BeanShell預處理程式

本篇用個簡單的例子記錄下前置處理器-BeanShell預處理程式的用法。

測試流程

1、請求userInfo介面,介面會返回多個user資訊,我們需要用返回結果中提取全部userName。

userInfo介面返回引數格式如下:

{
    "code":"0",
    "message":"success",
    "data":[
        {
            "id":0,
            "userName":"使用者0",
            "password":null,
            "age":0,
            "gender"
:0, "phoneNum":"13788881111", "email":"[email protected]", "address":"蘇州市蘇州中心", "createTime":"2022-03-06T03:24:19.701+0000", "updateTime":"2022-03-06T03:24:19.701+0000" }, { "id":1, "userName":"使用者1", "password":null,
"age":79, "gender":0, "phoneNum":"13788881039", "email":"[email protected]", "address":"蘇州市蘇州中心", "createTime":"2022-03-06T03:24:19.701+0000", "updateTime":"2022-03-06T03:24:19.701+0000" }, { "id":2, "userName":"使用者2
", "password":null, "age":25, "gender":0, "phoneNum":"13788881544", "email":"[email protected]", "address":"蘇州市蘇州中心", "createTime":"2022-03-06T03:24:19.701+0000", "updateTime":"2022-03-06T03:24:19.701+0000" }, { "id":3, "userName":"使用者3", "password":null, "age":81, "gender":0, "phoneNum":"13788881127", "email":"[email protected]", "address":"蘇州市蘇州中心", "createTime":"2022-03-06T03:24:19.701+0000", "updateTime":"2022-03-06T03:24:19.701+0000" }, { "id":4, "userName":"使用者4", "password":null, "age":94, "gender":0, "phoneNum":"13788881039", "email":"[email protected]", "address":"蘇州市蘇州中心", "createTime":"2022-03-06T03:24:19.701+0000", "updateTime":"2022-03-06T03:24:19.701+0000" } ] }

2、將第一步獲取的userName遍歷登入login一遍,需要替換請求引數中的userName值。

login介面請求引數如下:

{
    "userName": "admin",
    "password": 123456
}

指令碼編寫

1、userInfo介面下新增json提取器來提取userName,同時新增除錯取樣器方便檢視取樣變數值

2、執行指令碼,檢視結果樹,檢視除錯取樣器的響應結果

從取樣器結果來看,userName取出來10個值,userName_matchNr=10且變數名分別為userName_1、userName_2、userName_3......userName_10

3、新增迴圈控制器,迴圈控制器下新增login請求
迴圈次數填寫變數名${userName_matchNr},不管userInfo介面返回多少個使用者資訊,保證每個使用者登入一次。

4、從第2步除錯取樣器的結果來看,指令碼執行的時候我們需要用userName_1、userName_2、userName_3......userName_10替換下login請求引數中userName。

這時候我們就需要新增前置處理器,這裡新增BeanShell預處理如下:

5、執行指令碼,結果如下,userInfo介面返回10個使用者資料,login用這10個使用者名稱依次請求login介面