【问题标题】:SoapUI's Script Assertion is failing for the json responseSoapUI 的 Script Assertion 对 json 响应失败
【发布时间】:2017-03-06 10:30:19
【问题描述】:

我想检查occupanysequenceorder 的每个实例是否与为此字段输入的请求匹配。当我执行log.error 时,它会输出:

ERROR:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
ERROR:1

所以当请求输入 1 时,这意味着在列表中所有实例都需要等于 1,它在上面做了。但是,当我执行断言时:

assert roominfo.occupancySequenceOrder.flatten() == occupancysequenceorder_request

它抛出一个错误的断言,我不知道为什么?如何让脚本断言通过执行相关检查。我将断言更改为 assert roominfo.occupancySequenceOrder.flatten().contains(occupancysequenceorder_request) 并且它通过了,但我不确定这是否真的进行了正确的检查,以确保 occupanysequenceorder 的每个实例都与输入的请求匹配。

下面是代码:

json.testregions.each { roominfo ->
   log.error roominfo.occupancySequenceOrder.flatten()
   log.error occupancysequenceorder_request
   assert roominfo.occupancySequenceOrder.flatten() == occupancysequenceorder_request
}

【问题讨论】:

  • 你的问题终于解决了吗?

标签: json rest groovy soapui


【解决方案1】:

查看 OP 的另一个问题及其来自here 的数据

你可以试试下面Script Assertion

//Check if the response is not empty
assert context.response, "Response is empty or null"
//Modify the value of the quest or read it thru properties if you want
def requestValue = 1

def json = new groovy.json.JsonSlurper().parseText(context.response)

json.regions.each { region ->
    region.hotels.each { hotel ->
        hotel.roomInformation. each { room ->
            assert room.occupancySequenceOrder == requestValue, "Value did not match for room ${room.hotelRoomId}"
        }
    }
}

【讨论】:

  • @BruceyBandit,你有机会尝试上述方法吗?
【解决方案2】:

不如试试:

roominfo.occupancySequenceOrder.every { it == 1 }

flatten() 对平面 List 没有影响。

你也可以试试:

roominfo.occupancySequenceOrder.unique() == [1]

如果您想比较列表。

【讨论】:

  • 两种方法都不起作用蛋白石,它仍然带出一个错误
  • 答案与问题中提供的数据直接相关。更好地提供正确的数据,以便得到相应的答案。
  • @BruceyBandit 请检查数据类型。您可能会将IntegerString 进行比较。
猜你喜欢
  • 1970-01-01
  • 2014-07-01
  • 2017-02-27
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
相关资源
最近更新 更多