Soap Ui的财产转移

时间:2017-01-05 12:50:54

标签: soap groovy soapui

我想将Soap Ui API响应中的指定标记值转移到同一测试用例中的groovy脚本。我已尝试在这两者之间进行属性转换,但响应中的整个数据都粘贴在groovy中。任何人都可以建议我一些更好的Idea.Thanks。

1 个答案:

答案 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')