我想将Soap Ui API响应中的指定标记值转移到同一测试用例中的groovy脚本。我已尝试在这两者之间进行属性转换,但响应中的整个数据都粘贴在groovy中。任何人都可以建议我一些更好的Idea.Thanks。
答案 0 :(得分:0)
使用样本xml
对此进行解释,因为没有提供样本。
执行请求时,下面是响应xml:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ConversionRateResponse xmlns="http://www.webserviceX.NET/">
<ConversionRateResult>0.005</ConversionRateResult>
</ConversionRateResponse>
</soap:Body>
</soap:Envelope>
现在,将向您展示如何检索ConversionRateResult
元素值,并使其可用于在其他测试步骤中访问。
关键是使用Script Assertion
将测试用例级自定义属性的给定元素的值存储到测试用例的请求步骤,并且能够使用property expansion
进行访问。
脚本断言:
//Check if the response is not empty
assert context.response
//Closure to get the any element value(non-repeting)
def searchData = { data, elementName ->
data.'**'.find{ it.name() == elementName}
}
//Create object for the response
def parsedXml = new XmlSlurper().parseText(context.response)
//Call the above closure to get the value of ConversionRateResult which is 0.005 in above response
log.info searchData(parsedXml, 'ConversionRateResult')
//Store it at test case custom property called RATE
context.testCase.setPropertyValue('RATE', searchData(parsedXml, 'ConversionRateResult') as String)
如何使用属性扩展在同一测试用例的以下测试步骤中访问RATE?
Request
类型步骤,则使用${#TestCase#RATE}
。例如,您必须在下一个soap或rest或http或jdbc请求中访问RATE值,然后<element>${#TestCase#RATE}</element>
Groovy Script
,请使用以下其中一项:
context.expand('${#TestCase#RATE}')
或context.testCase.getPropertyValue('RATE')