Jmeter后置处理器-正则表达式提取器

本文介绍如何使用JMeter的正则表达式提取器从API响应中提取数据,并将其传递给另一个请求的过程。

在实际测试中,我们可能会对一个接口的返回结果进行提取,校验其是否正确或者给另外的接口使用,通常会使用正则表达式对结果进行提取或者使用xpath提取。在这里主要介绍正则表达式提取器的使用。

正则表达式在众多语言中均有涉及,且语法大同小异,这里并不打算做深入介绍,本人也是略懂皮毛而已,需要在这块再下功夫。这里对Jmeter中正则表达式的使用也比较简单。

1. 在Jmeter中建立脚本,脚本如下


其中HTTP-请求-login的结果将要给HTTP请求-roleADD使用,find请求返回消息如下:


其中hlx是需要获取传给下个接口的数据。对返回数据进行提取,在find请求下加了一个正则表达式提取器:添加-后置处理器-正则表达式提取器


2. 设置正则表达式的参数:


要检查的响应字段:这里根据需要进行选择

引用名称:即是下一个接口要使用的变量名称,也是提取内容存放的变量

正则表达式:这里就是需要匹配的内容,使用()括起来,一个()与下面的模板对应;括号中内容是正则表达式的内容

                    .表示匹配任意字符

                    +表示匹配一次或者多次

                    ?表示0或1次

模板:模板使用$n$表示,此处,上面只有一个(),所以这里使用$1$,如果上面有两对(),那么模板为$1$$2$,以此类推

匹配数字:-1表示匹配到的全部,1表示匹配到的第一个,2表示匹配到的第二个......0表示随机取一个

缺省值:这里可以自己给一个,如果没有那么使用的是null

3. 添加一个后置处理器:Debug PostProcessor查看详细日志(如上图)

4. 在roleADD接口中对提取的变量引用:


可以看到这里引用的是${user_1}而不是上面的设置的${user},刚开始的时候这里引用也是${user},但是测试接口并不对,后来认真的看了一下正则表达式提取的值,才明白了。下面附图正则表达式提取的详细结果:


在上图中可以看到user为前缀的变量很多,通过观察我们就可以得知自己需要使用的是哪一个值(这块具体的细节笔者还在理解中,这里不做详细解释,避免误导他人)

5. 检查roleADD接口是否取值正确:


取值正确!

以上就是使用正则表达提取器提取接口返回结果的主要过程



<think>好的,我现在需要帮助用户了解JMeter中如何使用正则表达式提取器作为后置处理器。首先,我需要回顾用户提供的引用内容,看看里面有哪些关键点可以利用。 根据引用[2],正则表达式提取器的作用是提取响应数据中的特定内容,这在用户登录或动态数据获取时很有用。引用[3]提到了使用Dummy Sampler模拟返回数据,并用Debug PostProcessor查看结果,这可以作为示例的基础。引用[4]解释了作用范围选项,比如Main sample and sub-samples,这些参数在配置时需要注意。 用户需要的是使用方法和示例,所以步骤应该分点清晰。首先应该介绍基本配置,比如添加位置、字段说明。然后可能需要一个具体的例子,比如用户登录后的token提取,引用[3]中的购票网站例子可以参考。此外,引用[3]还提到如何拆分结果集,这点也可以作为示例之一。 需要注意的是,用户可能对正则表达式语法不太熟悉,可以简要说明常用语法,如(.+?)匹配任意内容,并强调模板的使用。同时,变量的引用方法(如${token})也是关键点,需要提及。 还要确保示例中的步骤具体,比如使用Dummy Sampler模拟响应,配置正则表达式提取器,用Debug Sampler检查变量,以及如何在后续请求中使用变量。这些步骤在引用[3]中都有涉及,可以整合进来。 最后,常见问题部分可以参考引用[4]的作用范围设置,比如作用域选错导致提取不到数据,或者正则表达式不准确。这部分能帮助用户避免常见错误。 总结一下,回答的结构应该是:简介、使用步骤、示例演示、常见问题,然后生成相关问题。需要确保LaTeX格式正确,行内公式用$...$,独立公式单独成段。同时引用标注要正确,比如在提到作用范围时引用[^4],示例部分引用[^3]。</think>JMeter后置处理器中的正则表达式提取器用于从服务器响应中提取动态数据,常用于接口测试的参数关联。以下为详细使用方法和示例: ### 一、正则表达式提取器配置步骤 1. **添加组件** 右键点击HTTP请求 -> 添加 -> 后置处理器 -> 正则表达式提取器 2. **核心字段说明** - 引用名称:自定义变量名(如`token`) - 正则表达式:编写匹配规则(如`"token":"(.+?)"`) - 模板:`$1$`表示提取第一个捕获组 - 匹配数字:`0`随机,`1`第一个匹配项 - 缺省值:匹配失败时的默认值 $$正则表达式公式示例:\\ R = \{(a,b) \mid a \in A,\ b = f(a)\} \quad \text{表示响应数据的映射关系}$$ ### 二、示例演示:登录token提取 1. **模拟登录响应** 使用Dummy Sampler返回模拟数据: ```json {"code":200,"data":{"token":"dXNlcjE6MTIzNDU2"}} ``` 2. **配置正则表达式提取器 - 引用名称:`token` - 正则表达式:`"token":"(.+?)"` - 模板:`$1$` - 作用范围选择`Main sample only` 3. **调试验证 添加Debug PostProcessor查看`token=${token}`的提取结果 4. **跨请求调用 在后续HTTP请求头中使用`${token}`变量 ### 三、常用正则语法 | 语法 | 说明 | 示例 | |-----------|------------------------|-------------------| | `(.+?)` | 非贪婪匹配任意字符 | `id=(.+?)&` | | `\d+` | 匹配数字 | `orderNo=(\d+)` | | `.*?` | 跨行匹配 | `total:(.*?)USD` | ### 四、常见问题处理 1. **提取失败检查** - 确认作用范围是否包含目标响应 - 检查正则表达式是否包含捕获组`()` - 使用View Results Tree查看原始响应 2. **多值处理** 当匹配多个值时,通过`${var_1}`,`${var_2}`访问,或设置匹配数字为`-1`获取全部匹配项
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值