0


jmeter正则提取token

在很多接口测试或者压力测试的过程中并不需要一直登录,而是使用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即可。


本文转载自: https://blog.csdn.net/m0_37617149/article/details/123401753
版权归原作者 Alice_zn 所有, 如有侵权,请联系我们删除。

“jmeter正则提取token”的评论:

还没有评论