SOAPUI 方括号围绕我的实际结果导致断言失败
SOAPUI Square brackets around my actual results causing assert to fail
我正在编写一个 Groovy 脚本断言,它根据 SOAP 响应中包含的值验证先前 JDBC 响应步骤的值。
当我 运行 我的脚本时,我可以看到返回的两个值相同,但实际结果值(来自 SOAP 响应)被方括号包围,这反过来使断言失败。我猜这与一个是字符串而另一个不是字符串有关?
如何从实际结果中去除方括号或将它们添加到预期结果值以确保断言通过?
下面是我的断言脚本。
预期结果为001
实际结果是 [001]
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def pxml = new XmlSlurper().parseText(context.response)
//grab the expected result from jdbc response
def expectedCodes = context.expand( '${JDBC Request#ResponseAsXml#//*:TW304_PRODHIST.PRODUCT_1}' )
//grab the actual result from the SOAP response
def actualCodes = pxml.'**'.findAll{it.name() == 'CurrHospProductCode'}*.text()
assert expectedCodes == actualCodes
log.info expectedCodes
log.info actualCodes
因为您期望的是预期的单个值,而您得到的是一个包含单个元素的数组。
如果正确,您可以按照下面的方式进行操作:
assert expectedCodes == actualCodes[0]
附带说明一下,您可能需要仔细检查您是否真的只期望单个值,或者是否有可能获得值列表。
编辑:基于您的脚本。
findAll
给你列表作为结果。如果您希望 xml 中有单个元素,那么您可以将其更改为 find
,然后您的实际代码应该按原样工作。
我正在编写一个 Groovy 脚本断言,它根据 SOAP 响应中包含的值验证先前 JDBC 响应步骤的值。
当我 运行 我的脚本时,我可以看到返回的两个值相同,但实际结果值(来自 SOAP 响应)被方括号包围,这反过来使断言失败。我猜这与一个是字符串而另一个不是字符串有关?
如何从实际结果中去除方括号或将它们添加到预期结果值以确保断言通过?
下面是我的断言脚本。
预期结果为001 实际结果是 [001]
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def pxml = new XmlSlurper().parseText(context.response)
//grab the expected result from jdbc response
def expectedCodes = context.expand( '${JDBC Request#ResponseAsXml#//*:TW304_PRODHIST.PRODUCT_1}' )
//grab the actual result from the SOAP response
def actualCodes = pxml.'**'.findAll{it.name() == 'CurrHospProductCode'}*.text()
assert expectedCodes == actualCodes
log.info expectedCodes
log.info actualCodes
因为您期望的是预期的单个值,而您得到的是一个包含单个元素的数组。
如果正确,您可以按照下面的方式进行操作:
assert expectedCodes == actualCodes[0]
附带说明一下,您可能需要仔细检查您是否真的只期望单个值,或者是否有可能获得值列表。
编辑:基于您的脚本。
findAll
给你列表作为结果。如果您希望 xml 中有单个元素,那么您可以将其更改为 find
,然后您的实际代码应该按原样工作。