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请求

jmeter使用正则提取器--把上一个请求结果作为下一个请求的参数

接口1返回的结果:

jmeter使用正则提取器--把上一个请求结果作为下一个请求的参数

2、在步骤1http请求下右键添加-后置处理器-正则表达式提取器(提取器一定需要在提取的请求下

3、进入到如下页面,页面设置如下

 jmeter使用正则提取器--把上一个请求结果作为下一个请求的参数

其中

引用名称:后边使用参数引用的方式引用这个提取器提取到的值,这里命名为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}

jmeter使用正则提取器--把上一个请求结果作为下一个请求的参数

 参考资料

https://blog.csdn.net/defonds/article/details/41476727