ATLANTBH jmeter-components:JSON Path Assertion

时间:2012-10-25 15:54:44

标签: json jmeter jsonpath jmeter-plugins

我正在尝试使用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"}}}
    }
    
  4. 有没有人有使用这个JMeter插件的经验?
    我知道我可以使用regexBeanshell进行验证,但我宁愿使用这些JSON Path Assertion。

    非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:3)

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

假设您可以使用jmeter的标准Response_Assertion轻松使用断言123456789来代替JSON Path Extractor(来自相同的组件集合)。

  1. 将2个JSON Path Assertions作为子项添加到采样器,它返回您要处理的json响应:

    enter image description here

    enter image description here

    表达式将相应地$.result.errors..code$.result.errors..error

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

    enter image description here

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

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

    enter image description here

    这将在123456789变量的值中声明密钥的名称(${errorKey})。


  4. 所以最终的结构可能看起来像

    ...
    YOUR Sampler
        JSON Path Extractor
        JSON Path Assertion
        JSON Path Assertion
        Response Assertion
    ...