jmeter 用一个正则提取器提取多个值的两种方法
发布时间:2025-05-22 22:13:20 发布人:远客网络
一、jmeter 用一个正则提取器提取多个值的两种方法
jmeter中,用 JSON提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢?
肯定,很多人都自信满满的说,可以!形如: token":"(.*?)","identity":"(.*?)"写一个这样的正则表达式,不就是可以提取两个了吗!
是的,这种做法没有错,但是,你发现一个问题吗?你的“ Name of created variable引用名称”应该怎么填呢?你是填一个,还是多个,多个你又用什么符号来分隔呢?软件测试面试宝典
然后,然后你就楞住了,因为你不能用正则提取器,同时把提取的多个值写到对应的变量中,虽然你理想的写了多个变量名称,也用符号分隔了,结果,你用调试取样器查看得时候,你发现,你取的多个值,都在一个变量里面了,而且这个变量带有符号。
什嘛,不能一次提取多个?哪我要用多个,怎么用?
方法一:如果你眼睛比较尖,你可能从上面一张图,已经看到了曙光。在上一张图中,我们又 retoken,iden_g1和 retoken,iden_g2看到了吗?他们的值是不是就是你想要的呢?
所以,我们可以在一个正则提取器中,同时提取多个值,多个值时,模板之间不用分隔符号,用一个变量接收,然后在关联使用时,使用变量名称_g1、变量名称_g2......依次类推,就可以了。
方法二:既然用一个变量接收,他会接收全部的提取值,那我就把值拆开。用一个定义的标点符号,拆开成多个值。
写多个正则表达式,用 1个变量接收,模板之间用逗号分隔
用一个 split函数,进行拆分,放入新的变量中
从调试取样器中,可以看到拆分之后的结果
使用新的变量名称,注意,使用第一个变量,则用新变量名称_1
最后,请求,在查看结果树中,看到请求的结果,已经使用拆分后的值了。
二、Jmeter-正则表达式提取器详解
场景:在进行B测试时,需要利用A接口返回的数据,因此需对A接口响应报文进行后置处理。
步骤1:在具体请求下添加Jmeter正则表达式提取器,此操作位于Jmeter的“后置处理器”板块。
步骤2:打开Jmeter正则表达式提取器控制面板,这里展示的是其主要组件及其用途。
位置1:指定名称及注释,以方便后续的引用与理解。
位置2:定义正则表达式提取内容的范围,具体说明请查阅相关协议文档。
位置3:进行正则表达式的设置,包括引用名称、正则表达式、模板、匹配数字及缺省值等参数。
引用名称:用于其他地方引用提取值的变量名称,如设置为“str”,引用方式为${str}。
正则表达式:用于提取内容的正则表达式,注意小括号表示提取,需将要提取的内容括起来。
模板:用$$表示引用,如果正则表达式中有多个提取表达式,则可以使用$1$、$2$等表示解析到的第几个值给变量。
匹配数字:0表示随机,-1表示所有匹配项,其他正整数表示在已提取内容中,第几个匹配内容。
缺省值:当正则匹配失败时,将使用的值。
关于正则表达式:在提取过程中,匹配数字为-1时,可以使用${str_1}、${str_2}等方式提取第1个和第2个匹配的内容。
正则表达式模式:正则*与正则*?的区别在于贪婪与非贪婪模式。
一个有效的正则表达式示例:name="file" value="(.+?)">。
解析:括号内为待返回的匹配字符串,点号匹配任何字符串,+表示一次或多次匹配,问号表示避免过度匹配。
用案例说明匹配规则,展示response返回的多个packageId。
获取第1个packageId:1676176670240829445
获取第1个packageId完整信息:"packageId":"1676176670240829445"
获取第2个packageId:(示例略)
获取第3个packageId:(示例略)
获取所有packageId,采用自由模式${变量_序号}。
测试结果:展示了通过正则表达式提取器获取不同情况下的匹配内容。
1.$1$与$0$的区别在于是否完整匹配头信息。
2.获取报文中第N个字段,可通过匹配数字1-N或采用匹配数字-1全部返回,再通过变量_序号选择特定的数值。
三、Jmeter中正则表达提取器如何使用
Jmeter中正则表达式提取器的使用方法可以参考黑马程序员视频里的讲解。其位置位于线程组->后置处理器->正则表达式提取器。
1.引用名称:即下一个请求中将要引用的参数名称。例如,填写"title",那么在后续的请求中可以用${title}来引用它。
2.正则表达式:这是制定规则的公式,用于识别和提取需要的数据。公式模板可以是"前缀识别()后缀识别",其中括起来的部分就是要提取的数据。常见的正则表达式符号包括:
?:在找到第一个匹配项后停止。
3.模板:提取器中使用$$格式,$1$表示解析到的第一个值;如果有两个匹配值,第二个值为$2$,依此类推。
4.匹配数字:1代表全部取值,0代表随机取值。通常情况下,我们选择1来获取所有匹配值。
有关Jmeter正则表达式提取器的详细使用方法,可以在黑马程序员论坛上找到全套免费课程。