使用JMeter的JSON提取器:通过递归下降查找,从接口响应中提取特定字段

在接口测试中,我们经常需要从返回的JSON数据中提取特定字段以便后续使用。JMeter提供了JSON提取器,可以帮助我们实现这一目标。本文将介绍如何使用JMeter的JSON提取器通过递归下降查找的方式从接口响应中提取特定字段,并通过示例解释JSON表达式中 ".." 的逻辑。

1. 示例接口响应结果:

复制代码
{
    "data": [{
        "code": "2676e33735cf4ca1a8a6b079da24fad0",
        "name": "报销管理"
    },
    {
        "code": "91b398813a39461ea8389e883dea4861",
        "name": "财务核算"
    },
    {
        "code": "a1b29fc6ff86460a81959d8d06ea13dd",
        "name": "凭证金额校验"
    }]
}

2. 步骤:

2.1 添加JSON提取器:

在你的HTTP请求之后,添加一个JSON提取器。JSON提取器可以在JMeter的线程组下的HTTP请求中找到。

2.2 配置JSON提取器:

  • "变量名":输入一个变量名称(例如,提取的code将存储在这个变量中,比如 "extractedCode")。
  • "JSON路径表达式":这里我们要提取 "name" 为 "凭证金额校验" 的 "code"。我们使用JSON路径表达式来指定要提取的字段。

JSON路径表达式如下:

复制代码
$..[?(@.name=='凭证金额校验')].code

在这个表达式中,"$.." 表示递归下降查找,而不仅限于当前层级的子元素。它可以检索所有层次的子元素,用来查找具有特定属性的所有嵌套对象。在例子中,它会匹配所有名为 "凭证金额校验" 的对象,并提取它们的 "code" 值。

2.3 使用提取的值:

在接下来的请求或其他操作中,你可以使用${extractedCode}来引用提取出的值。

通过以上步骤,JMeter能够轻松提取JSON响应中符合条件的字段,并将其存储在指定的变量中供后续使用。

这样,我们就可以利用JMeter的JSON提取器方便地从接口响应中提取所需的字段,以支持更复杂的测试或验证场景。