jmeter中正则提取元件的使用

正则提取器的一般使用场景是, 在我第二个请求参数中需要加入第一个请求的返回值, 此时通过正则提取器可以提取第一个请求返回值中指定的字段信息并赋值, 在第二个请求参数中直接引用该变量即可

jmeter的正则提取器截图如下: 
这里写图片描述
简单介绍下其中几个比较重要的字段的信息, 如下表

参数释义
引用名称在HTTP等请求中,引用此数据,需要用到的名称
正则表达式用于将需要的数据提取出来, 一般简单的通用语法就是:
左边界(.*?)右边界, 其中(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配
模板表示正则表达式中的第几个提取值:
$负数$:表示取所有值
$0$:表示随机取值
$1$:表示取第1个
$2$:表示取第二个
$1$$2$: 表示第一个和第二个拼接起来
以此类推:$n$:表示取第n个
例如"token":"(.*?)","sex":(.*?),"userName"$1$表示前一个匹配值, $2$表示第二个匹配值 ,如果只有一个正则表达式提取值, 直接使用$1$匹配即可
匹配数字(0代表随机)返回匹配结果数组的某个元素, 0代表随机取值,1代表第一个值, 负数表示返回全部元素
缺省值默认值, 即没有匹配到值时的默认值

接下来看下实际的使用, 
如图所示, 取登录后返回的ticket值, 此时因为方便说明, 使用"(.*?)"来获取返回值中双引号之间的内容: 
这里写图片描述
添加debug元件, 展示debug信息如下, 
这里写图片描述
此时, ${ticket}表示取的是第一列的值, 第一列是由模板上的$1$确定的, 
此时Match No设置为-1 ,表示会返回所有匹配值数组的元素, 可以看到返回有三个元素分别为${ticket_1},${ticket_2},${ticket_3} 此时, 若有多行数据, 且模板处设置的为$1$, 如果选择第一个数组元素, 则: 
• ${ticket_1_g0}取的都是第一个匹配值的第一列全部的数据 
• ${ticket_1_g1}取的是第一个匹配值的第一列第一行的数据, 
• ${ticket_1_g2}取的是第一个匹配值的第一列第二行的数据, 
${ticket_2_g1}取的是第二个匹配值的第一列第一行的数据,

再来看一个比较简单的正则, 如下, 只取匹配值中的第一个元素: 
这里写图片描述
这里写图片描述
Match No设置为1 , 表示只会选择返回的匹配值数组当中的第一个元素, 直接使用${ticket}表示即可, 此时, 若有多行数据, 且模板处设置的为$1$, 则: 
• ${ticket_g0}取的都是第一列全部的数据 
• ${ticket_g1}取的是第一列第一行的数据, 
• ${ticket_g2}取的是第一列第二行的数据,

 

例如:取多个值例子(本添加)

 

jmeter自带后置处理器:正则表达式提取器,可以用来提取接口响应里的信息,给予后续接口传参用。

例如要提取响应结果里的token字段及sex字段(响应内容为:

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器如下设置,

正则表达式提取器说明:

Apply to:应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口。

要检查的响应字段:样本数据源。

主体: 接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个。

信息头:响应头的所有内容。

Request Headers:请求头的所有内容。

  url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。

  响应代码:http响应代码,如101,200,302,404,501等。

  响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。

引用名称:其他地方引用时的变量名称,名称只能是一个,引用方法:${token}。如图

正则表达式:数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,如最上面图的"token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"这3个就是左右边界,(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)。建议均使用非贪婪匹配,除非特殊情况。

模板:对应正则表达式提取器类型,样式为:$n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,即(0),若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(83EEAA887F1D2F1AA1CDA9E1978109920)。模板是可以自由组合的,后续案例中再介绍。

匹配数字:正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。当为 0 时,随机返回匹配的数据。当为 1 时,表示返回匹配结果数组的第一个元素。当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量token_matchNr,在引用时:通过${token_1}的方式来取第1个匹配的内容,${token_2}来取第2个匹配的内容。

缺省值:匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。

 

正则测试:

可以直接在察看结果树里选择Regexp正则测试模式来测试正则是否写的正确。

 

正则结果查看:

如何查看提取到了想要的内容呢,这里就需要提到另外一个后置处理器:Debug PostProcessor

该元件就为调试所用,一般用于查看变量值,添加方法同正则表达式提取器。

JMeter正则提取器是一种用于从响应数据提取特定信息的元素。它使用正则表达式来匹配和提取数据,并将提取的值保存在变量以供后续的测试步骤使用。 以下是正则提取器的用法步骤: 1. 添加正则提取器:在你想要进行数据提取的HTTP请求之后添加一个正则提取器元素。 2. 设置正则表达式:在正则提取器的属性面板,设置你的正则表达式。这个正则表达式应该匹配你想要提取的数据。例如,如果你想要提取HTML响应的所有链接,你可以使用`<a href="(.*?)">`作为你的正则表达式。 3. 设置模板:在属性面板,设置一个模板变量名来保存提取的数据。这个变量将被用于在后续测试步骤引用被提取的值。 4. 设置匹配规则:选择你希望如何处理匹配到的结果。你可以选择匹配到的第一个结果或者所有结果。 5. 设置默认值:在属性面板,设置一个默认值,以防找不到任何匹配项时使用。 6. 使用提取的值:在后续的测试步骤,可以使用`${变量名}`来引用之前提取的值。例如,如果你将模板变量名设置为`extractedValue`,你可以在后续的测试步骤使用`${extractedValue}`来引用这个值。 请注意,正则表达式的编写需要一定的经验和技巧。确保你仔细测试和验证你的正则表达式,以确保它能够准确匹配到你想要提取的数据。 希望这个回答能够帮助到你!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值