【问题标题】:SOAP UI Automation - Assertion if reponse XML's dynamic elements value is blankSOAP UI 自动化 - 如果响应 XML 动态元素值为空则断言
【发布时间】:2015-08-20 14:51:43
【问题描述】:

请在下面找到示例肥皂请求

<FlowerSearchRequest>
    <Request>
        <name>ROSE</name>
        <color></color>
        <smell></smell>
    </Request>
</FlowerSearchRequest>

当前功能

  1. &lt;Request&gt;--&lt;name&gt; 是必填字段
  2. &lt;Request&gt;--&lt;color&gt;&lt;Request&gt;--&lt;smell&gt; 不是强制性的,即它们可以为空(&lt;smell&gt;&lt;/smell&gt;)但不能为空
  3. SOAP 响应&lt;FlowerSearchResponse&gt; 包含所有请求参数&lt;Request&gt;&lt;ResponseList&gt; 下的该请求的响应参数(如下所示)
  4. 对于每个&lt;Request&gt;,响应可以在&lt;ResponseList&gt; 下拥有&lt;Response&gt; 元素列表
  5. 如果我使用 ROSE 搜索,&lt;Response&gt; 的结果很少 - &lt;smell&gt; 元素可能/可能没有值(但它不能为空)
  6. &lt;Response&gt; 在结果中的出现是动态的,也就是说,如果我用 Lily 搜索,我可能会得到 10 个甚至更多 &lt;Response&gt; 元素

上述请求的 SOAP 响应

<FlowerSearchResponse>
    <Request>
        <name>ROSE</name>
        <color></color>
        <smell></smell>
    </Request>
    <ResponseList>
        <Response>
            <name>ROSE</name>
            <color>Red</color>
            <smell>Pleasant</smell>
        </Response>
        <Response>
            <name>ROSE</name>
            <color>Blue</color>
            <smell>UnPleasant</smell>
        </Response>
        <Response>
            <name>ROSE</name>
            <color>Yellow</color>
            <smell></smell>
        </Response>
    </ResponseList>
</FlowerSearchResponse>

问题

在 SOAP UI 中,以下情况如何自动化?

  • 遍历动态列表中的所有&lt;Response&gt; 元素(在编写断言时不确定&lt;Response&gt; 标记的计数),即使单个&lt;Response&gt; 具有&lt;smell&gt; 元素的空白值,也可以断言
  • 断言测试用例在检查空白&lt;smell&gt;元素时只应考虑元素&lt;Response&gt;--&lt;smell&gt;,即不应考虑&lt;Request&gt; -- &lt;smell&gt;

P.S:我真的是 SOAP UI 断言的新手 - 努力使用 xslt 找到解决方案,但到目前为止还没有成功。

【问题讨论】:

    标签: xslt soap automation xquery soapui


    【解决方案1】:

    如果您希望 XPath 表达式根据是否有任何没有内容的 Response/smell 元素返回 true 或 false:

    (: returns true if NO single one smell element is empty :)
    empty(//Response/smell[empty(node())])
    

    如果你想计算它们:

    (: returns the number of empty smell elements :)
    count(//Response/smell[empty(node())])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多