正则取第一个匹配到的值_强大测试工具JMeter【正则表达式提取器】

点击蓝字|关注我们

e90a61ea1f3a81d90a949171c9bd110b.png

在前几篇关于JMeter的文章中,分享了关于JMeter基础操作的技术点,在日常的测试工作中,除了基础的操作,还有很多种测试情况。

本文,再给刚入门JMeter测试的测试人员介绍一种【接口信息依赖】的情况。

比如,需要测试两个HTTP请求,用JMeter的HTTP组件发送了一个请求A,A种返回的参数X是请求B的请求参数。

用手工的方式解决,先对请求A返回的参数X做记录,然后在手动的添加到请求B中。但是这里就有弊端了,如果参数都是动态的,那每次手工调试会降低效率。所以一般我们不会用手工的方式做处理。

这个时候,我们就要用到【正则表达式提取器】

正则表达式提取器

什么意思呢?

JMeter中给到一个自动传上个接口返回参数的功能-正则表达式提取器。

举个简单的例子,大家都去看过电影,那电影的入场流程是什么样子呢?

5e12c3fc6821c381c7eaa8996030af36.png

如图,用技术风格理解,可以这样解释,

  1. 你(客户端)先给影院(服务器)票钱(请求A)。

  2. 影院(服务器)返给你(客户端)电影票(返回参数)。

  3. 你(客户端)拿着电影票(返回参数)给到检票的人(请求B),检票的人验证OK,再返回给你(客户端)票根。

  4. 你拿着票根对号入座

而以上这种两个请求直接有参数依赖关系的,就可以用JMeter的正则表达式提取器自动完成。

在JMeter上,如何操作呢?

在【HTTP请求】下加入正则表达式提取器:

a69739d4a576907daa6a35d01c6f9128.png

分别含义如下:

4793aade65549e54899a1bf061458c79.png 262be7ce773a9ad8ff3352374715e66e.png
  1. 引用名称,自己取,是应用到请求B中的参数名

  2. 正则表达式

    ()括起来是提取的部分

    点代表匹配任何字符串

    +表示一次活多次

    *表示0次或多次

    ?表示找到第一个匹配后停止

  3. $1$提取多个时,找到的是第一个,如果数字是2则代表找到的第二个。

  4. 然后放到请求B中。

5cc2b9987bc7991653a5b591244ac982.png

(.+?)  和     (.*?)  的区别:

(.+?)提取1个字符串及以上,不要太贪婪,在找到第一个匹配项后停止;

(.*?)提取0个字符串及以上,要取的值是空值的时候可以取得到。

例如:“test":"",如果要取test的值,使用  (.+?) 匹配不到值。使用  (.*?) 则可以取到test的值为空,写法是:  “test":"(.*?)"。

想要学习更多内容,加下方微信,获取JMeter想过视频课哦!

8d6862fee1cbf55a7b6c437b34057b67.png 6726336b1398842e4c91914d4924e55a.png

扫码加工程师微信获得

7bfd7b6558997c83156e0843e670bc61.png