验证 json 负载中元素的值

Verify the value of an element in the json payload

当我们调用 HTTP GET 方法时,API returns 数据。 我想评估特定输入键值的所有返回值是否如 GET URL.

中所述

URL 调用: HTTP 获取方法。 -->

https://dummy.dns.com/Wells/resource?$filter=employee.address eq 'France FR'

API 返回了以下响应,

{"next":"https://dummy.dns.com/Wells/resource?$skip=10&$filter=employee.address eq 'France FR'","value":[{"customer.name":"Stefan Peter","customer.landlinePhoneNumber":"97642","employee.country.name":"France","employee.country.id":"FR","employee.address":"France FR","employee.latitude":49,"employee.longitude":7.6,"leave.count":0,"_id":"M1023453","_externalId":"WF3453","_name":"WellsFargo","_employeeType":["contractual"],"_employee":"WF3453","_customer":"M1023453","leave.sickCount":0,"leave.casualCount":0},{"customer.name":"Stefan Peter","customer.landlinePhoneNumber":"97642","employee.country.name":"France","employee.country.id":"FR","employee.address":"France FR Junk","employee.latitude":49,"employee.longitude":7.6,"leave.count":0,"_id":"M1023454","_externalId":"WF3454","_name":"WellsFargo","_employeeType":["contractual"],"_employee":"WF3454","_customer":"M1023454","leave.sickCount":0,"leave.casualCount":0},{"customer.name":"Stefan Peter","customer.landlinePhoneNumber":"97642","employee.country.name":"France","employee.country.id":"FR","employee.address":"France FR","employee.latitude":49,"employee.longitude":7.6,"leave.count":0,"_id":"M1023455","_externalId":"WF3455","_name":"WellsFargo","_employeeType":["contractual"],"_employee":"WF3455","_customer":"M1023455","leave.sickCount":0,"leave.casualCount":0}]}

现在我想验证键值对是否与我在 URL 中作为输入/查询参数传递的键值对相同​​。

我使用 JMeter 作为我的客户端来评估 API 功能。 要评估的自定义断言是什么。 响应是一个数组,它的大小可能会增长到 100 或 200。 任何人都可以请建议。提前致谢。

使用 JSON Assertion 并设置:

  • 断言 JSON PATH 存在:$..value[*].['employee.address']
  • 勾选"Additionally assert value"
  • 输入期望值:France FR

  1. 添加 JSR223 Assertion 作为 HTTP 请求采样器的子项,returns 上述响应
  2. 将以下代码放入"Script"区域:

    new groovy.json.JsonSlurper().parse(prev.getResponseData()).value.each { entry ->
        if (!entry.get('employee.address').equals('France FR')) {
            AssertionResult.setFailure(true)
            AssertionResult.setFailureMessage('Expected "France FR", got "' + entry.get('employee.address') + '"')
        }
    }
    
  3. 就是这样,如果不匹配,采样器将被标记为失败:

更多信息: