有些人能解释一下SOAP上实现以下场景的最佳方法吗?
将来自一个测试用例Web服务的响应值作为第二个测试用例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下面。
现在,如何将上面的会话as自动加载到Test 2 Web服务中,如下所示。
<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>
发布于 2017-03-06 08:05:36
对于此任务,您可以使用属性传输测试步骤,而无需编写Groovy脚本。在SoapUI文档可以看到更多信息。您只需选择带有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>
只要这两个测试用例属于同一个测试套件,就可以工作。
卡雷尔
https://stackoverflow.com/questions/42591395
复制相似问题