如何将值与值列表进行比较
How to compare a value with a list of values
我正在尝试执行断言,其中区域 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
原始回复:
{
"xxx": [{
"regionId": xxx,
"xxx": [{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
},
{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
}
]
}]
谢谢
根据您的输出,hotelregionid
是一个列表列表
因此您可以使用 flatten
将其恢复为整数列表:
assert hotelregionid.flatten().every {it == hotelregionid_request}
这里是 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
}
}
我正在尝试执行断言,其中区域 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
原始回复:
{
"xxx": [{
"regionId": xxx,
"xxx": [{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
},
{
"xxx": [{
"regionId": xxx
}],
"xxx": xxx
}
]
}]
谢谢
根据您的输出,hotelregionid
是一个列表列表
因此您可以使用 flatten
将其恢复为整数列表:
assert hotelregionid.flatten().every {it == hotelregionid_request}
这里是 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
}
}