1

我想比较从 SOAP 响应和 JDBC 请求中获取的节点下元素的值。我可以使用下面的 groovy 代码打印值,但无法比较相同的值,因为我不太擅长编码。

注意:两个响应中的元素名称相同但顺序不同。

我想根据两个响应中的元素名称比较值,而不管元素的顺序如何。注意:仅当 JDBC 元素值不为空时进行比较。

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( 上下文 )

def JMSHolder = groovyUtils.getXmlHolder("SOAPTestStep#Response")
def JDBCHolder = groovyUtils.getXmlHolder("JDBC Request step#ResponseAsXml")

def node1 = JMSHolder.getDomNodes("//ns0:Study[1]/ ")
def node2 = JDBCHolder.getDomNodes("//Row[1]/
")

node1.each {
log.info it.QName.getLocalPart()
log.info it.firstChild.nodeValue
}

node2.each {
log.info it.QName.getLocalPart()
log.info it.firstChild.nodeValue
}

4

1 回答 1

0

请看这个脚本,也许会对你有所帮助

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( "Request#Request" );
def holder2 = groovyUtils.getXmlHolder("Responses#ResponseAsXml")

def stringList=[]
def stringList2=[]

for( node in holder['//name] )
{  
  stringList =stringList+node 
}


for( node2 in holder2['//name'] )
{ 
  stringList2 =stringList2+node2 
    if (node2 in stringList ) assert true
    else assert null
}


log.info "Request>" + stringList
log.info "result>"+ stringList2
于 2012-10-08T13:17:34.920 回答