0

我有一个soapUI 测试步骤,可以在我的数据库中创建一个对象。我返回的 XML 响应包含一个我需要在下一步中引用的节点,即我需要键 'guid' 之后的值

<flex.messaging.io.amf.ASObject serialization="custom">
  <unserializable-parents/>
  <map>
    <default>
      <loadFactor>0.75</loadFactor>
      <threshold>48</threshold>
    </default>
    <int>64</int>
    <int>28</int>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <object-array/>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>3</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>5</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>guid</string>
    <string>818f40db-c217-46ed-a6a2-7c830d894a95</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
  </map>
  <flex.messaging.io.amf.ASObject>
    <default>
      <inHashCode>false</inHashCode>
      <inToString>false</inToString>
      <namedType>package/class</namedType>
    </default>
  </flex.messaging.io.amf.ASObject>
</flex.messaging.io.amf.ASObject>

我已经看到了关于这个主题的各种问题,但似乎没有一个对我有用,我相信由于我错误地理解了soapUI 期望的语法。

如果测试步骤一称为“stepOne”并且我需要在“stepTwo”中引用 XML 响应,为什么:

def temp = context.expand('${stepOne#Response//map[1]/string[27]}');

...不行。我假设我错误地引用了响应。我什至会在下一步中找到一种引用整个响应的方法。然后我可以搜索它并使用 groovy 找到我需要的值。

我应该尝试进行财产转让吗?如果是这样,源将是 stepOne,响应将是 ResponseAsXml,目标将是 stepTwo,但我真的不想将整个 xml 分配给属性,我只想分配我需要的节点(map [1] /字符串[27])。

@Sebi-是的,我已经尝试过了,我已经无数次浏览了这个页面。我可以将整个响应转移到 TestCase 级别的临时属性,但我似乎无法在脚本窗口中构建代码以正确引用此属性......这就是我现在拥有的 ' def temp = ${#TestCaseName# tempProperty} ' 但这不起作用。我想把整个 xml 带进来,这样我就可以处理我需要的节点并不总是“map”中的第 27 个“string”的情况。我在声明命名空间时也遇到了麻烦(请参阅 xml 结构) soapUI 教程。

4

1 回答 1

0

是的,我们改为使用Property Transfer TestStep

但我真的不想将整个 xml 分配给一个属性,我只想分配我需要的节点

在源选择框下方,您有一个输入框。在那里,您可以编写要传输的节点的 XPath 表达式。

你可以在这里找到一个很好的教程:http: //www.soapui.org/Functional-Testing/transfering-property-values.html

于 2012-05-24T10:08:52.297 回答