Groovy SOAPUI用方括号括住实际结果,导致断言失败

Groovy SOAPUI用方括号括住实际结果,导致断言失败,groovy,soapui,assert,Groovy,Soapui,Assert,我正在编写一个Groovy脚本断言,它根据SOAP响应中包含的值验证来自先前JDBC响应步骤的值 当我运行脚本时,我可以看到两个值都返回相同的值,但实际的结果值(来自SOAP响应)被方括号包围,这反过来会导致断言失败。我猜这是因为一个是字符串,而另一个不是 如何从实际结果中去掉方括号,或者将它们添加到预期结果值中,以确保断言通过 下面是我的断言脚本 预期结果为001 实际结果为[001] def groovyUtils = new com.eviware.soapui.support.Groov

我正在编写一个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
,然后实际的代码应该按原样工作。

谢谢Rao。您对添加[0]的初始响应确实通过了测试,这非常好。我还尝试用
find
替换
findAll
,但同样的问题也存在。但我可以根据您的初始答案将此标记为已回答。这是因为
*
之前的
text()
。如果使用了
find
*
也可以删除。是的,你说得对。一切都有道理。再次感谢你为我回答这个问题。很高兴这对我有帮助。