jmeter正则提取token

本文介绍了如何在JMeter中使用正则表达式提取登录接口返回的token,以便在后续接口测试中使用。内容包括JMeter正则表达式的参数配置,如apply to、JMeter Variable、Field to check等,并提供了正则表达式和Template的示例。通过Debug Sampler验证了token的提取和赋值成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在很多接口测试或者压力测试的过程中并不需要一直登录,而是使用token或者cookie做后续的工作。下面我以登录后获取token,将token作为其他接口的输入为例,使用正则表达式来实现。

首先来看登录返回数据的格式,通过Json格式化工具后可清晰看到数据格式如下所示:

 

接下来看看jmeter正则表达式页面参数含义:

apply to:

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
Main sample only:仅作用于父节点取样器
Sub-samples only:仅作用于子节点取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

 Field to check

Body: 接口响应主体内容,默认选择此项
Response Headers:响应头的所有内容
Request Headers:请求头的所有内容
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数
Response Code:http响应代码,如101,200,302,404,501等
Response Message:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/

name of created Variable:自定义变量名,其他地方引用时可填写,引用方法:${变量名},此处直接写变量名

Regular Expression:正则表达,一般通用语法为:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,以上图响应结果为例,正则可写为:"token":"(.*?)",      正则语法如下:

.*:贪婪匹配原则:整个表达式匹配成功的前提下,尽可能多的匹配,即匹配到不能匹配为止
.*?:非贪婪匹配:在匹配成功的情况下尽可能少的匹配

Template:模板是对应正则表达式提取器类型,样式为:$n$

        若为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容

        若为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容

        若为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容

        若为:$1$$2$,则把2个(.*?)所匹配的内容拼接起来

Match No. :

正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。

当为 0 时,随机返回匹配的数据;为 1 时,表示返回匹配结果数组的第一个元素;

当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量,引用时,通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容

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

最终将Jmeter正则表达式设置如下:

 正则设置后可通过添加Debug Sampler(选中线程组右击依次点击“Add-Sampler-Debug Sampler”)验证是否截取成功并赋值给ntoken,添加后如下(默认即可):

运行登录后,Debug Sampler结果为:

红框中的内容说明已提取token并赋给变量ntoken,后续线程中引用ntoken即可。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值