jmeter接口关联:JSON提取和正则表达式提取

07-02 1449阅读

jmeter接口关联:JSON提取和正则表达式提取(仅供参考)

  • 前言
  • 一、JSON提取
    • 1.1 JSON 语句:
    • 1.2 JSON提取器
    • 1.3 JSON提取表达式写法&JSON提取器中的写法
      • 1.3.1 场景一:json提取器 提取某个变量值
      • 1.3.2 场景二:json提取器一次性提取多个变量名
      • 1.3.3 场景三:json提取器,提取返回值 数组中多个实例的 templateID信息
      • 二、正则表达式
        • 2.1. 正则表达式
        • 2.2. 正则表达式提取器
        • 2.3 正则表达式提取的几种场景
          • 2.3.1 场景一:正则表达式提取某个特定值
          • 2.3.2 场景二:一个正则表达式提取到多个结果

            前言

            在 JMeter 中,正则表达式和 JSON 提取器都用于从响应数据中提取所需内容,但它们的使用场景略有不同。

            正则表达式提取器:

            正则表达式提取器是 JMeter 的内置功能,用于从响应数据中提取特定模式的文本。

            适用于响应数据的内容没有明确定义结构的情况。当响应数据是自由格式的文本、HTML、XML 或其他非结构化数据时,可以使用正则表达式提取器来捕获信息,编写适当的正则表达式来匹配并提取所需的内容。

            JSON 提取器:

            JSON 提取器是 JMeter 的插件,专门用于从 JSON 格式的响应数据中提取数据。适用于处理结构化的 JSON 响应数据。


            一、JSON提取

            1.1 JSON 语句:

            jmeter接口关联:JSON提取和正则表达式提取

            1.2 JSON提取器

            Jmeter中将json提取的值作为变量便于后期引用

            JSON提取器参数释意:

            Names of created varriables:设置获取到值的变量名称,用于后期引用;多个变量时用分号分隔;

            JSON Path expressions:用于查找对应值的JSON语句;

            Match No.(0 for Random):0表示随机;n表示取第几个匹配值;-1表示匹配所有,后续引用时采用 变量名_N 取指定的第N个值;

            Default Values:缺省值,当JSON 语句未匹配到值时取该值。

            如果前面设置提取多个变量名且需要有缺省值时,这里的缺省值必须设置对应个数的默认值,值与值之间用分号分隔;

            不需要缺省值时,这里也可以为空。

            jmeter接口关联:JSON提取和正则表达式提取

            1.3 JSON提取表达式写法&JSON提取器中的写法

            如图所示给定一个接口响应的示例,按要求提取对应值的几种场景:

            jmeter接口关联:JSON提取和正则表达式提取

            1.3.1 场景一:json提取器 提取某个变量值

            (1) 从响应数据中提取 “nonsysCount” 参数对应的值;

            json表达式写法一:$.object.nonsysCount 或 $..nonsysCount

            jmeter接口关联:JSON提取和正则表达式提取

            json提取器中写法:

            变量名参数列
            Names of created variables:nonsysCount
            JSON Path expressions:$.object.nonsysCount 或 $..nonsysCount
            Match No.(0 for Random):1
            Default Values:只有一个变量名时可以为空

            后期在需要的地方调用时的引用方法:${nonsysCount}

            1.3.2 场景二:json提取器一次性提取多个变量名

            如果只创建一个JSON提取器,可以通过逗号分割的方式同时创建多个变量;

            如下图接口返回示例,需要同时提取第一个list中的templateID和vpsCount,可以在json提取器中添加多个变量名并用分号隔开。

            jmeter接口关联:JSON提取和正则表达式提取

            json提取器中写法:

            变量名参数列
            Names of created variables:templateID0;vpsCount0
            JSON Path expressions:$.object.list[0].templateID; $.object.list[0].vpsCount
            Match No.(0 for Random):1
            Default Values:0;0

            后期在需要的地方调用时的引用方法:${templateIDs_1}、${templateIDs_2}、${templateIDs_3} …

            1.3.3 场景三:json提取器,提取返回值 数组中多个实例的 templateID信息

            jmeter接口关联:JSON提取和正则表达式提取

            json表达式为:$.object.list[*].templateID

            表达式解析: list[*].templateID:表示获取到list参数列表的所有值,并从中提取出所有的templateID字段值;

            jmeter接口关联:JSON提取和正则表达式提取

            JSON提取器中写法:

            JMeter中的JSON提取器表达式可以设置为(这个Match No设置为-1了就是取所有)

            变量名参数列
            Names of created variables:templateIDs
            JSON Path expressions:$.object.list[*].templateID
            Match No.(0 for Random):-1
            Default Values:只有一个变量名时可以为空

            后期在需要的地方调用时的引用方法:${templateIDs_1}、${templateIDs_2}、${templateIDs_3} …

            二、正则表达式

            2.1. 正则表达式

            jmeter正则表达式提取器在接口关联中常见,所谓关联,就是把动态变化返回的数据获取到,并把它保存为一个参数,提供给后面需要用到的地方,正则表达式可以提取请求任意部分的值。

            Jmeter中通过“添加—后置处理器—正则表达式提取器”来提取数据。

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            2.2. 正则表达式提取器

            jmeter接口关联:JSON提取和正则表达式提取

            2.3 正则表达式提取的几种场景

            2.3.1 场景一:正则表达式提取某个特定值

            提取登录接口中的token值,并用于后续接口的鉴权:

            jmeter接口关联:JSON提取和正则表达式提取

            正则表达式中的写法:

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            知识点:

            jmeter接口关联:JSON提取和正则表达式提取

            对正则表达式提取的值进行引用:

            后续在有需要的地方以${引用名称}的形式进行调用:

            例如,此处将提取到的token值保存在引用变量token中,在信息头管理器中对其引用${token}

            注:具体引用的格式需要根据实际接口要求,通过查看请求头信息中的鉴权字段(浏览器上一般通过F12查看请求标头信息),合理添加相应的格式。

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            2.3.2 场景二:一个正则表达式提取到多个结果

            2.3.2.1 一个()匹配到多个值,Match No=-1

            变量名参数列
            引用名称:user
            正则表达式:"name":"(.*?)"
            模板:$1$
            Match No.(0 for Random):-1
            缺省值:0;0

            jmeter接口关联:JSON提取和正则表达式提取

            接口调用时的写法:

            一个() 匹配到接口的多个响应值时,一般会结合 ForEach控制器,用于迭代获取到值,将提取到的值赋予到 HTTP 请求中使用。

            此处添加 调试取样器,并将获取到的值通过引用 “输出变量名称”(即user_NO),在调试取样器中应用,便于调试时观察。

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            2.3.2.1 一个正则表达式有多个(),支持提取多个结果:

            jmeter接口关联:JSON提取和正则表达式提取

            jmeter接口关联:JSON提取和正则表达式提取

            在其他关联接口引用时,可以通过user_g1和user_g2,获取到对应的值并传入需要使用该参数值的接口即可。

            注意点:

            1. 如果正则匹配到值,但是没有填写模板,则返回空:

              jmeter接口关联:JSON提取和正则表达式提取

            2. 如果模板填写的$0$ ,token取的是token_g0:

            jmeter接口关联:JSON提取和正则表达式提取

            1. 如果模板写$1$,token取的是token_g1:

            jmeter接口关联:JSON提取和正则表达式提取

            1. 模板写$2$(不存在),如果模板不存在,token为null(即使勾选了使用空默认值,也返回null)

            jmeter接口关联:JSON提取和正则表达式提取


            学习笔记,仅供参考哦!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]