如何在jmeter中断言到json对象?

时间:2018-11-07 13:51:35

标签: json jmeter

我在Jmeter中创建了一个发布请求,该请求的响应主体为Json格式,我想在一个csv文件中的响应与我从Jmeter请求中获得的响应之间进行比较。 来自请求的响应未排序,即使两个响应的结构不同,它们的内容也相等。 一个例子: 发布请求,回复正文:

"getTestData":
{
    "id": 1,
    "name": "London",
    "Data": [
       {
        "Oxford",
        "Picadilly"
        },
       { 
        "Kensington",
        "Central"
       }
    ]
}

csv文件,一行中的每个json响应正文:

   "getTestData":
    {
        "id": 1,
        "name": "London",
        "Data": [
           {
            "Oxford",
            "Picadilly"
            },
           { 
            "Kensington",
            "Central"
           }
        ]
    }

有人可以帮助我如何比较两者吗?谢谢

1 个答案:

答案 0 :(得分:0)

  1. 您的2个摘要相同
  2. 它们不是JSON,您可以使用online JSON validator
  3. 检查自己

通常最好使用特殊的库,例如JSONAssert,这会使您的生活更轻松

  1. 下载jsonassert-x.x.x.jar并将其放置到JMeter Classpath
  2. 重新启动JMeter以拾取.jar
  3. 添加JSR223 Assertion作为请求的子项,该请求返回实际的JSON响应
  4. 将以下代码放入“脚本”区域:

    def expected = vars.get('expected')
    def actual = prev.getResponseDataAsString()
    
    org.skyscreamer.jsonassert.JSONAssert.assertEquals(expected, actual, false)
    
    • 您可能需要将'expected'更改为CSV数据集配置中定义的实际JMeter变量名称

就是这样,如果JSON文件中存在差异,您将收到错误消息,指出差异在哪里。