我有一个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 教程。