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":"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接口