SOAP UI Automation - 断言如果响应XML的动态元素值为空

时间:2015-08-20 14:51:44

标签: xslt soap automation xquery soapui

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

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

当前功能

  1. <Request> - <name>是必填字段
  2. <Request> - <color><Request> - <smell>不是强制性的,即它们可以为空(<smell></smell>)但不能为空
  3. SOAP响应<FlowerSearchResponse>包含所有请求参数<Request>以及<ResponseList>下此请求的响应参数(如下所示)
  4. 对于每个<Request>,响应可以包含<Response>下的<ResponseList>元素列表
  5. 如果我使用ROSE进行搜索,则结果较少<Response> - <smell>元素可能/可能没有值(但不能为空)
  6. 结果中出现的
  7. <Response>是动态的,即,如果我使用Lily进行搜索,我可能会获得10个或更多<Response>元素
  8. 上述请求的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中,如何自动化以下情况?

    • 浏览动态列表中的所有<Response>元素(在编写断言时不确定<Response>标记的数量),即使单个<Response>有空白也会断言<smell>元素
    • 的值
    • 断言测试用例在检查空白<Response>元素时应该只考虑 <smell> - <smell>元素,即不应该考虑 <Request> - <smell>

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

1 个答案:

答案 0 :(得分:0)

如果您希望XPath表达式返回true或false,具体取决于是否有任何Response/smell元素没有内容:

(: 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())])