我正在尝试执行一个断言,其中区域id的每个实例都匹配请求中的区域ID。例如,如果在请求中输入数字'736',那么对于响应中的每个区域id实例,它们都应该是'736'。然而,当我在资产上执行时,它表明它是错误的并且我相信它是因为输出在列表中,所以==不起作用。如何获取请求,列表中的每个项目都形成匹配的响应?
以下是代码:
def hotelregionid = json.regions.hotels.regionId
assert hotelregionid != null
def hotelregionid_request = messageExchange.modelItem.testStep.testCase.testSuite.getPropertyValue("regionid")
assert hotelregionid.every {it == hotelregionid_request} -- this is where the assertion fails.
log.info hotelregionid
log.info hotelregionid_request
它输出的错误信息是:
assert hotelregionid.every {it == hotelregionid_request} | | | false [[xxx,xxxx,xxxx,xxxx,xxx,xxx,xxx,xxx,xxx]]
当我注释掉断言时提供的log.info与我将作为xxx的值相同。:
[[xxx,xxx,xxx,xxx,xxx,xxx,xxx]] - 这是hotelregionid
xxx - 这是hotelregionid_request
RAW响应:
{
"xxx": [{
"regionId": xxx,
"xxx": [{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
},
{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
}
]
}]
谢谢
答案 0 :(得分:1)
这是script assertion
。
请注意,在以下变量中定义预期值。
编辑:根据OP的完整回复更新回答here
//Change the value as needed
def expectedRegionId = 736
assert context.response, 'Response is null or empty'
def json = new groovy.json.JsonSlurper().parseText(context.response)
def sb = new StringBuffer()
json.regions.each { region ->
assert region.regionId == expectedRegionId
region.hotels.each { hotel ->
assert hotel.regionId == expectedRegionId
}
}
答案 1 :(得分:0)
从您的输出中,flatten
是列表列表
因此,您可以使用assert hotelregionid.flatten().every {it == hotelregionid_request}
将其恢复为整数列表:
text-decoration: none!important;