【问题标题】:Property Transfer In Soap UiSoap UI 中的属性转移
【发布时间】:2017-01-05 12:50:54
【问题描述】:

我想在同一个测试用例中将 Soap Ui API 响应中的指定标记值传输到 groovy 脚本。我尝试了这两者之间的属性传输,但是来自响应的整个数据都粘贴到了 groovy 中。任何人都可以建议我一些更好的想法。谢谢。

【问题讨论】:

  • 您能否提供示例响应?

标签: soap groovy soapui


【解决方案1】:

使用示例 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 值,然后&lt;element&gt;${#TestCase#RATE}&lt;/element&gt;
  • 如果测试步骤是Groovy Script,则使用以下之一: context.expand('${#TestCase#RATE}')
    context.testCase.getPropertyValue('RATE')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多