7

我正在尝试使用ATLANTBH jmeter JSON PATH 断言执行 JSON 断言。
但是,我似乎无法编写正确的表达式来从下面发布的 JSON 提要中获取以下字段:

  1. 123456789
  2. 1009
  3. 一些随机消息

    {"api": {"status":"Success","callsremaining":36,"version":"x.x.x.x"}
    ,"result":{"errors":{"123456789":{"code":1009,"error":"SOME RANDOM MESSAGE"}}}
    }
    

这里有人有使用这个 JMeter 插件的经验吗?
我知道我可以使用regexBeanshell进行验证,但我宁愿使用这些 JSON 路径断言。

您能提供的任何帮助将不胜感激。

4

1 回答 1

3

看起来您可以使用 JSONPath 表达式(在 JSON Path Assertion 组件中)轻松地断言两者1009SOME RANDOM MESSAGE值,但不确定123456789:这不是节点值而是波特名称,并且这些组件使用的 JSONPath 实现似乎没有表达式来获取节点名称。

假设您可以轻松地使用123456789jmeter 的标准Response_Assertion断言而不是绑定 JSON 路径提取器(来自相同的组件集合) 。

  1. 将 2 个 JSON 路径断言作为子项添加到返回要处理的 json 响应的采样器中:

    在此处输入图像描述

    在此处输入图像描述

    表达式将是$.result.errors..code$.result.errors..error相应的。

  2. 将 JSON 路径提取器作为子项添加到同一采样器以提取完整的错误条目:

    在此处输入图像描述

    表达:$.result.errors.
    这将提取{"123456789":{"error":"SOME RANDOM MESSAGE","code":1009}}并保存到指向变量 ( ${errorKey}) 中。

  3. 在先前添加 JSON 路径提取器之后,将 Response Assertion 作为子项添加到同一采样器:

    在此处输入图像描述

    这将在变量的值中断言键 ( 123456789) 的名称。${errorKey}


所以最终的构造可能看起来像

...
YOUR Sampler
    JSON Path Extractor
    JSON Path Assertion
    JSON Path Assertion
    Response Assertion
...
于 2013-02-22T11:47:16.560 回答