jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
转载地址:
http://www.cnblogs.com/0201zcr/p/5089620.html
http://www.cnblogs.com/whitewasher/p/6762793.html
http://www.cnblogs.com/LiangHu/p/6230372.html
下面有三篇都是关于讲解jmeter的关联(将上一个请求的结果作为下一个请求的参数),第一篇看不懂就看第二篇,第三篇最易懂!
【第一篇】
1、简介
- 引用名称是下个请求将要引用到的变量名;
- 正则表达式是提取你想要内容的正则表达式,小括号()表示提取,也就是说对于你想要提取的内容需要用它括起来;
- 模板是使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从 1 开始匹配,依次类推。这里只有一个,所以填写 $1$ 即可;
- 匹配数字表示如何取值。0 代表随机取值,1 代表全部取值。这里只有一个,填 1 即可;
- 缺省值表示参数没有取到值的话,默认给它的值。一般不填。
这个请求返回的数据如下:
{"message":"success","statusCode":200,"registerDay":"20","tokenId":"bf1017bc1bb495ae31764b306a3422885f5"}
正则表达式提取器是一个后置处理器,作用是在请求完成后,从响应数据中截取一部分字符串保存到变量中,以便下一个请求使用,下面我们就来做一个简单的例子吧
1.首先在线程组下添加两个HTTP请求,
2.添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数
3.在第一个HTTP请求下添加正则表达式提取器
4.在第一个HTTP请求添加好IP地址,路径,端口号,协议,方法,如果有参数,还需要添加参数,我这里没有参数所以就不添加了
5.点击绿色箭头启动,查看第一个HTTP请求完成后的响应数据
6.第一个HTTP请求完成后的响应数据的url是随机变化的,每次HTTP请求完成后的响应数据的url是不同的,现在需要获取第一个HTTP请求完成后的响应数据的url作为第二个HTTP请求的IP地址,这个时候就需要用到正则表达式提取器,正则表达式提取器是一个后置处理器,作用是在请求完成后,从响应数据中截取一部分字符串保存到变量中,以便下一个请求使用。
7.现在编辑正则表达式提取器
8.说明:
(1)引用名称:作为下一个请求要引用的参数名称,如填写myurl,则可用${myurl}引用它来作为第二个HTTP请求的IP地址
(2)正则表达式用""包起来,如第一个HTTP请求完成后的响应数据{"status":"ok","message":"创建房间成功","data":{"url":"https://www.pp2pp.xyz/room/58ff022f5cd4c32ae9a7f457"}} 我们只需要URL,所以正则表达式为 "url":"https://(.+?)"
() 表示括起来的部分就是要提取的。
【第三篇】
(正则表达式提取器是Jmeter关联中的一种)使用场景:
有两个HTTP请求,请求A的返回数据中有一个字段“ABCD”,该字段要作为请求B的入参。
1、添加方式
请求A上右键-->后置处理器->正则表达式提取器
2、提取A请求中的taskCode对应的值
为了获取到上图中圈起来的这个值,要配置正则表达式提取器:
说明:
(1)引用名称:下一个请求要引用的参数名称,如填写Atask,则可用${Atask}引用它。
(2)正则表达式:
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
(4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error
3、获取到的值传入B请求
看一下请求B是否如预期的一样传入Atask这个值
引用成功~~
记录一个好用的测试正则表达式的工具:
工具名称:RegexTester
使用方法:
如果觉得本文的文章写得很好,打个赏,多少都行~~~