大家!
使用SoapUI 5.2.1和Groovy TestCase有2个测试步骤:
请求中:
<soapenv:Envelope ... >
<soapenv:Header/>
<soapenv:Body>
<ban:transactions>
<session>x</session>
<type>y</type>
</ban:transactions>
</soapenv:Body>
</soapenv:Envelope ... >
内幕:
def xml = context.expand('${create#request#//ban:transactions}')
此脚本返回:
<ban:transactions>
<session>x</session>
<type>y</type>
</ban:transactions>
我应该在脚本中更改什么,以便脚本可以返回我:
<session>x</session>
<type>y</type>
答案 0 :(得分:0)
假设您的XML是,我们将在节点主体
下提取数据<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<hello>oye1</hello>
<ok>test</ok>
<hello>oye2</hello>
<ok>test2</ok>
</Body>
</Envelope>
下面的groovy代码可以从xml中提取节点,提到它上面的节点。所以我们在这里尝试提取标记
下的节点def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("testStepName#Response")
def responseXml=holder.getXmlObject()
String xmlObj=responseXml.toString()
String [] responseXmlObj=xmlObj.split('<Body>')[1].split('</Body>')
log.info responseXmlObj[0]
输出将为
Thu Nov 23 12:38:05 GMT+05:30 2017:INFO:
<hello>oye1</hello>
<ok>test</ok>
<hello>oye2</hello>
<ok>test2</ok>
您需要使用具有响应的步骤名称更改testStepName