jmeter正则取多个参数

场景:用户登录请求之后返回token和userId值,在下一个请求中,消息头中要用到token,请求参数中要用到userId。
先执行下所有的消息,添加结果树,查看登录返回的消息,明确要取出的参数(后面正则去匹配)
jmeter正则取多个参数
文章图片
1564478503981.png
两种方法去取这两个参数
一、添加两个正则分别取出两个参数
1.登录请求中添加两个正则表达式,分别取出token,userId值

jmeter正则取多个参数
文章图片
1564478024918.png
jmeter正则取多个参数
文章图片
1564478086309.png
这块不知道怎么写这些模板数据的,可以参考:
https://www.jianshu.com/p/42cea76e195d
添加第二个正则,取出token
jmeter正则取多个参数
文章图片
1564478156850.png
2.下一个请求消息时,要用到登录返回的参数
jmeter正则取多个参数
文章图片
1564478358813.png
jmeter正则取多个参数
文章图片
1564478550030.png
3.执行一遍查看结果
jmeter正则取多个参数
文章图片
1564478582077.png
token和userId都取到了值
二、添加一个正则表达提取器,一次性取出两个参数
【jmeter正则取多个参数】1.正则书写
引用名称:没啥说的,就是变量名字,想取啥就取啥,后面调用时写成跟这边一致就行
正则表达式:()内就是正则取出的内容,要取出来的是userId和token的值,所以添加两个正则(.?),但是由于刚才登录返回时userId 和token中间还有username参数,甚至还有换行空格等,所以去匹配时需要抹掉中间不需要的字段,使用正则:[.\s\S]+? 代表所有的字符,完整的正则就是:"userId":"(.?)",[.\s\S]+?"token":"(.*?)"
模板:表示取第一个正则的值,表示取第二个正则的值,这块没有什么影响,因为后面调用时参数会自生成,我这里取两个值,我就写成,,最后取出来时,userinfo就是userId,token,这个下面步骤会详说debug sampler模块(简直不要太好用!)
匹配数字:有了debug sampler模块,这个不论写成什么数字,已经不那么重要了

jmeter正则取多个参数
文章图片
1564478662196.png
2、添加Debug Sampler模块,简直就是提取参数的神器,可以输出你参数到底取了什么值
jmeter正则取多个参数
文章图片
1564479381503.png
这个模块直接添加就OK了,然后按照我刚才写的正则,执行一下所有的请求,看下这个模块给出的响应:
jmeter正则取多个参数
文章图片
1564480056935.png
3、在下一个请求中将参数名字改成对应的参数名
jmeter正则取多个参数
文章图片
1564480307395.png
jmeter正则取多个参数
文章图片
1564480318039.png
执行下看下结果:
jmeter正则取多个参数
文章图片
1564480347915.png
执行成功!

    推荐阅读