本篇用個簡單的例子記錄下前置處理器-BeanShell預處理程序的用法。
測試流程
1、請求userInfo接口,接口會返回多個user信息,我們需要用返回結果中提取全部userName。
userInfo接口返回參數格式如下:
{ "code":"0", "message":"success", "data":[ { "id":0, "userName":"用戶0", "password":null, "age":0, "gender":0, "phoneNum":"13788881111", "email":"test@123.com", "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":"test@123.com", "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接口