• jmeter接口之json提取器应用


    在接口测试中有一个这样的场景:业务接口需要用到登录token;下个接口需要用到前个接口返回值作为参数,该怎么实现?

    首先先看下登录、业务接口,本文用的jmeter版本为5.4.1

    一、json提取器设置变量获取数据

    1、先添加登录接口,运行查看响应结果

     json path表达式怎么写?例如我要获取token,可写$data.token,$表示根元素,然后一级一级属性往下去找,先找到data,再往下子节点找到token;也可以写成$..token,直接从根元素去递归查找token。

     

     2、右键登录请求-->后置处理器-->添加“JSON提取器”

    JSON提取器说明:

    Apply to:应用范围

    Names of created variables :接收值的变量名,自定义,多个变量用分号分隔 

    JSON Path expression json path表达式,也是用分号分隔 

    Match No.(0 for Random)0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1

    Compute concatenation var(suffix_ALL):如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中

    Default Values: 缺省值,匹配不到值的时候取该值,可写error。

    为了检查通过json提取器是否正常获取到值,可添加Debug PostProcessor来检查。

     3、添加查询接口,将json提取器获取到的值,进行变量引用

     点击运行接口,运行成功

     二、json提取器设置一个变量获取多个数据

    1、例如从“默认页面查询接口”返回中获取所有name

     如果想要获取这里所有的name,json路径表达式怎么写?$..name或者$.data.records[*].orgName

     2、添加json提取器,获取所有name信息

     添加Debug PostProcessor来调试用,正常跑用例删除或禁用它。可查看到获取到了所有name值。通过name_1,....name_10可得到每一个name。

     3、将获取到的每一个name循环进行查询

    1)添加循环控制器,设置循环次数

     2)在循环控制器之下添加“输入查询接口”,并做以下设置

    因为也是业务接口,需要调用token,所以这里也加一下。

    因为要把JSON提取器中匹配到的name_1,....name_10循环传递给“用户流水记录”,

    __counter为jmeter自带的一个计数函数,${__counter(,)}引用这个函数,每运行1次+1,从1开始;

    name_${__counter(,)}运行第1次name_1,运行第2次name_2,以此类推,直到运行到循环次数name_10

    __V为jmeter自带的一个嵌套变量函数,运行第1次name_${__counter(,)}为name_1,${__V(name_${__counter(,)},)}则为${name_1},值10;以此类推,一直循环到${name_10}

     

    3)运行结果查看

     

  • 相关阅读:
    前端总结挺全面的
    cmd与bat脚本的使用
    Spring控制反转(IoC)的理解
    C# 中迭代器
    URL 分页并排序
    结合Flash上传文件时显示进度条
    C# 语言特性
    where T:new()
    图片缩放特效
    C# 隐藏窗体 ALT+TAb不可见
  • 原文地址:https://www.cnblogs.com/datacenter/p/15043104.html
Copyright © 2020-2023  润新知