Groovy断言

Groovy断言,groovy,soapui,assert,Groovy,Soapui,Assert,在SOAPUI中,当我尝试使用GoogleMapsAPI(PlaceAddress-Text Search)测试用例的自定义属性值从响应中断言纬度值时,使用Groovy的断言失败,尽管值相同。可能的原因是什么 API调用 https://maps.googleapis.com/maps/api/place/textsearch/json?query=Chennai+One&key=<developerKey> act是一个BigDecimal而exp是一个字符串。如果将它们

在SOAPUI中,当我尝试使用GoogleMapsAPI(PlaceAddress-Text Search)测试用例的自定义属性值从响应中断言纬度值时,使用Groovy的断言失败,尽管值相同。可能的原因是什么

API调用

https://maps.googleapis.com/maps/api/place/textsearch/json?query=Chennai+One&key=<developerKey>

act
是一个
BigDecimal
exp
是一个
字符串
。如果将它们强制转换为相同类型,则可以成功比较它们:

import groovy.json.JsonSlurper
def res= messageExchange.response.responseContent
def json1=new JsonSlurper().parseText(res)

def act=json1.results[0].geometry.location.lat
log.info(act.getClass()) // BigDecimal
log.info act
def String actString = act

def exp=context.getTestCase().getPropertyValue("lat")
log.info(exp.getClass()) // String
log.info exp

assert actString.equals(exp)
soapUI还有一个方便的内置JSON路径匹配器,因此如果您不想:


输出是什么?断言异常确切地说是什么?非常确定您正在比较不同的类型。例如字符串和数字。“false”虽然值相同,但在我验证位置的“name”之类的文本时会传递
import groovy.json.JsonSlurper
def res= messageExchange.response.responseContent
def json1=new JsonSlurper().parseText(res)
def act=json1.results[0].geometry.location.lat
log.info act
def exp=context.getTestCase().getPropertyValue("lat")
log.info exp
assert act==exp
import groovy.json.JsonSlurper
def res= messageExchange.response.responseContent
def json1=new JsonSlurper().parseText(res)

def act=json1.results[0].geometry.location.lat
log.info(act.getClass()) // BigDecimal
log.info act
def String actString = act

def exp=context.getTestCase().getPropertyValue("lat")
log.info(exp.getClass()) // String
log.info exp

assert actString.equals(exp)