正则取第一个匹配到的值_强大测试工具JMeter【正则表达式提取器】
点击蓝字|关注我们
在前几篇关于JMeter的文章中,分享了关于JMeter基础操作的技术点,在日常的测试工作中,除了基础的操作,还有很多种测试情况。
本文,再给刚入门JMeter测试的测试人员介绍一种【接口信息依赖】的情况。
比如,需要测试两个HTTP请求,用JMeter的HTTP组件发送了一个请求A,A种返回的参数X是请求B的请求参数。
用手工的方式解决,先对请求A返回的参数X做记录,然后在手动的添加到请求B中。但是这里就有弊端了,如果参数都是动态的,那每次手工调试会降低效率。所以一般我们不会用手工的方式做处理。
这个时候,我们就要用到【正则表达式提取器】
正则表达式提取器
什么意思呢?
JMeter中给到一个自动传上个接口返回参数的功能-正则表达式提取器。
举个简单的例子,大家都去看过电影,那电影的入场流程是什么样子呢?
如图,用技术风格理解,可以这样解释,
你(客户端)先给影院(服务器)票钱(请求A)。
影院(服务器)返给你(客户端)电影票(返回参数)。
你(客户端)拿着电影票(返回参数)给到检票的人(请求B),检票的人验证OK,再返回给你(客户端)票根。
你拿着票根对号入座
而以上这种两个请求直接有参数依赖关系的,就可以用JMeter的正则表达式提取器自动完成。
在JMeter上,如何操作呢?
在【HTTP请求】下加入正则表达式提取器:
分别含义如下:
引用名称,自己取,是应用到请求B中的参数名
正则表达式
()括起来是提取的部分
点代表匹配任何字符串
+表示一次活多次
*表示0次或多次
?表示找到第一个匹配后停止
$1$提取多个时,找到的是第一个,如果数字是2则代表找到的第二个。
然后放到请求B中。
(.+?) 和 (.*?) 的区别:
(.+?)提取1个字符串及以上,不要太贪婪,在找到第一个匹配项后停止;
(.*?)提取0个字符串及以上,要取的值是空值的时候可以取得到。
例如:“test":"",如果要取test的值,使用 (.+?) 匹配不到值。使用 (.*?) 则可以取到test的值为空,写法是: “test":"(.*?)"。
想要学习更多内容,加下方微信,获取JMeter想过视频课哦!
扫码加工程师微信获得