一 Jmeter获取接口值并设置为变量
测试过程中遇到接口返回值在后续的多个接口中均被调用,通过json提取器获取到的变量只能用在下一个接口中,此时使用BeanShell PostProcessor(BeanShell 后置处理程序)设置为全变量即可完成目标,以下介绍2种方式:
本例流程:“开始游戏-结束游戏-获取奖品”,其中开始游戏生成batch_id,获取奖品时引用该值。
设置流程如下:
1.添加HTTP Requst请求:“添加-取样器-HTTP请求”,并设置请求参数
从开始游戏的运行结果可以看到返回batch_id
2.使用json提取器提取batch_id
2.1 选择需要提取的HTTP请求,添加json提取器:“添加-后置处理器-json提取器”
2.2 设置json提取器的值
Names of created variables:输出变量名称
JSON Path expressions:$.data.batch_id(获取batch_id)
Default Values:获取失败时输出默认值
3.添加BeanShell PostProcessor(BeanShell 后置处理程序)
3.1 在HTTP Request同级或下级添加,右键“添加-后置处理器-BeanShell PostProcessor”
3.2 方法一:设置BeanShell PostProcessor(BeanShell 后置处理程序)
//存为变量batch_id,供后面的接口使用
vars.put("batch_id",vars.get("batch_id"));
3.3 方法二:设置BeanShell PostProcessor(BeanShell 后置处理程序)为全局变量
4.添加引用“batch_id” 的结束游戏和获取奖品2个请求
4.1结束游戏:可以直接输入json提取器中的值
4.2 方法一:获取奖品引用:${batch_id}
4.3 方法二:获取奖品引用:${__P(batch_id,)}
运行结果获取到batch_id的值:
注意json提取器一定要放在HTTP 请求的下级,否则变量获取不到值;
二 json提取器获取数组中的返回值
上例中结束游戏返回av_id在数组award中:
json提取器获取av_id的值:$.data.award[0].av_id (由于award是数组,数组从0开始故增加[0])
获取奖品引用:
运行结果: