有些人可以解释SOAP UI Free的最佳方式来实现以下场景
将来自一个Test Case Web服务的响应值作为请求值加载到第二个Test Case Web服务上。
在测试用例1脚本断言
中import com.eviware.soapui.support.XmlHolder
def respXmlHolder = new XmlHolder(messageExchange.getResponseContentAsXml())
respXmlHolder.declareNamespace("ns1","http://www.moj.com/api/services/checkout")
def finsess = respXmlHolder.getNodeValue("//ns1:sessresp/ns1:sessionId")
log.info finsess
日志信息显示在70c8a6f80b6ff0c72502
下面
现在如何自动将上面的sessionid加载到Test Case 2 Web Service上,如下所示。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://www.moj.com/api/services/final">
<soapenv:Header/>
<soapenv:Body>
<typ:FinSessionRequest>
<typ:correlationId>1234</typ:correlationId>
<typ:sessionId>70c8a6f80b6ff0c72502</typ:sessionId>
<typ:username>abcd</typ:username>
<typ:password>1234</typ:password>
</typ:FinSessionRequest>
</soapenv:Body>
</soapenv:Envelope>
答案 0 :(得分:0)
您可以使用属性转移测试步骤执行此任务,而无需使用Groovy脚本。点击SoapUI docs了解更多信息。您只需使用XPath选择源XML元素,类似于目标元素。当您执行测试步骤(或测试用例)时,SoapUI将执行替换。我建议使用这种方式,因为它是透明的。
如果确实需要使用Groovy脚本来传输值,可以在断言脚本中设置测试套件属性值:
def testSuite = context.getTestCase().getTestSuite()
testSuite.setPropertyValue("MyId", finsess)
然后将 MyId 放入您的请求消息中:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://www.moj.com/api/services/final">
<soapenv:Header/>
<soapenv:Body>
<typ:FinSessionRequest>
<typ:correlationId>1234</typ:correlationId>
<typ:sessionId>${#TestSuite#MyId}</typ:sessionId>
<typ:username>abcd</typ:username>
<typ:password>1234</typ:password>
</typ:FinSessionRequest>
</soapenv:Body>
</soapenv:Envelope>
只要两个测试用例属于同一个测试套件,就可以正常工作。
卡雷尔