如何使用jmeter来确定json有效载荷中的value1 = x,value2 = y?

时间:2017-05-16 15:03:41

标签: json jmeter

所以基本上我正在尝试使用jmeter来剖析json有效载荷。我想查看有效负载,确定一个值是否等于某个值,如果该值是正确的,则确定该“模块”中的另一个值是否正确。以下示例:

{
  "status": "success",
  "data": {
    "foo": [
    {
    "ID": 570,
    "valueX": 1,
    "blah1": 1,
    "ValueY": 10,
    "blah2": "10"
    },
    {
    "ID": 570,
    "valueX": 2,
    "blah1": 1,
    "ValueY": 0,
    "blah2": "0"
    }]
}}

因此,如果我想确定是否valueX = 2,并验证valueY = 0,我将如何进行此操作?我熟悉使用json路径$.data.foo[0].valueY,但在这个例子中,API以不同的顺序返回值。因此valueX可能是1或2,具体取决于ID

任何建议或指示将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于JsonPath,你可以使用类似的东西:

$.data.foo..[?(@.valueX==2)].ValueY

它的作用:

  • $.data.foo..返回foo
  • 中的所有元素
  • [?(@.valueX==2)]过滤那些valueX为2
  • 的元素
  • .ValueY为同一元素返回ValueY。

至于如何做到这一点,还有很多方法。这里有#34;没有多余的装饰"之一:

  1. 在采样器下,添加Json Extractor,如下所示:
  2. enter image description here

    (创建包含JSON表达式评估结果的变量aaa

    1. 仍然在采样器下,在Json Extractor之后,像这样添加Response Assertion:
    2. enter image description here

      (根据原始问题,检查变量aaa 等于 0,这是ValueY的预期值。)

      当然,变量(aaa)的名称可以在两个地方都改变

      整个片段看起来像这样:

      enter image description here