jmeter使用正则提取器--把上一个请求结果作为下一个请求的参数
运用场景:接口2需要用到接口1返回的值
已知接口1返回部分结果如下:
{"code":0,"message":null,"result":{"create_time":1524345278173,"ACCESS-TOKEN":"BAdDfNnnhzbvnGqRJbnnTCegvzUOxVBz","expired_in":1800}}
后续接口的请求header会用到接口1中的access-token的值
操作步骤:
1、测试计划中添加线程组,线程组下添加Sampler-Http请求
接口1返回的结果:
2、在步骤1的http请求下右键添加-后置处理器-正则表达式提取器(提取器一定需要在提取的请求下)
3、进入到如下页面,页面设置如下
其中
引用名称:后边使用参数引用的方式引用这个提取器提取到的值,这里命名为token,使用时写${token}
正则表达式:使用(.+?)进行匹配提取,两边是要提取内容的边界;如{"code":0,"message":null,"result":{"create_time":1524345278173,"ACCESS-TOKEN":"BAdDfNnnhzbvnGqRJbnnTCegvzUOxVBz","expired_in":1800}},要提取access-token的值,也就是红色部分,表达式可写成"ACCESS-TOKEN":"(.+?)","expired_in"
【备注:试了下 "ACCESS-TOKEN":"(.+?)"也能成功】
模板:使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从 1 开始匹配,依次类推。这里填写 $1$ 【测试的时候没填写,结果就没提取到】
匹配数字:表示如何取值。0 代表随机取值,1代表取第一个匹配成功的值,-1代表取所有匹配成功的值
缺省值:表示参数没有取到值的话,默认给它的值。
4、在线程组下添加http信息头管理器,ACCESS-TOken的值引用正则表达式提取的 ${token}
参考资料
https://blog.csdn.net/defonds/article/details/41476727