如果Jmeter中的值相同但顺序发生变化,如何管理响应断言



我得到了响应,让我们假设{quot;profiles":{quot;HLS_1200"[{quot:profile_id;:38,"quality_id":11}];自适应";{"L","XL","XXL"},现在每次当我们点击API时,响应都是相同的,但序列正在改变,因此资产化失败。下一次我将得到类似于{"profiles":{"HLS_1200":[{"profile_id":38,"quality_id";:11}],";自适应";{"XL"、"L"、"XXL"},即使序列发生了更改,我也希望传递此响应断言。

转到执行";深度扫描";并且不关心属性的顺序

  1. 获取以下库并将它们放到JMeter Classpath中:

    • android-json-0.0.20131108.vaadin1.jar
    • jsonasser-1.5.0.jar
  2. 重新启动JMeter以获取库

  3. 添加JSR223断言作为返回JSON 的请求的子项

  4. 将以下代码放入";脚本"区域:

    def expected = '{n' +
    '  "profiles": {n' +
    '    "HLS_1200": [n' +
    '      {n' +
    '        "profile_id": 38,n' +
    '        "quality_id": 11n' +
    '      }n' +
    '    ],n' +
    '    "ADAPTIVE": [n' +
    '      "L",n' +
    '      "XL",n' +
    '      "XXL"n' +
    '    ]n' +
    '  }n' +
    '}'
    org.skyscreamer.jsonassert.JSONAssert.assertEquals(expected, prev.getResponseDataAsString(), false)
    

更多信息:

  • JSONassert简介
  • 用Groovy编写JMeter断言脚本-教程

最新更新