我正在尝试在SOAPUI中执行以下操作:
对于1和2:响应的结构类似于
<A><B>bb</B><C>cc</C><D>dd</D></A>
我使用 // A 通过Property Transfer步骤提取它,以识别节点的开头,并在下一个测试步骤中将带有子节点的节点传递给请求。在此之前,请求中的节点没有内容。 有效。
对于3我生成类似
的东西<E>ee</E>
第4步之后的目标是一个如下所示的请求结构:
<A><E>ee</E><B>bb</B><C>cc</C><D>dd</D></A>
使用
的解决方案${#TestCase#new_xml}
插入节点不起作用,因为没有办法将属性放在E节点所在的位置(据我所知)。
我尝试通过另一个Property Transfer测试步骤插入E节点 - 该属性的值作为子节点插入到A节点中(同样,A节点从响应复制到步骤2中的下一个请求) )。结果如下:
<A><![CDATA[<E>ee</E>]]<<B>bb</B><C>cc</C><D>dd</D></A>
我想知道:
如何将E节点作为子节点插入A节点,同时避免CDATA(或随后删除CDATA)。
为什么在步骤2中没有CDATA的情况下传递xml,它也使用SOAPUI Property Transfer Step,但不使用步骤4。
任何提示赞赏!
答案 0 :(得分:2)
1&amp; 2,您只需使用简单的property expansion。
请说出您的回复如下:
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
并且假设您要传输整个节点DDD
,包括子节点。在您的下一个请求中,您将使用${<TestStep_name>#Response//*:DDD}
。请注意*:
表示“任何名称空间”,因为在真正的SOAP响应中,您可能会有某种名称空间。
3:
// Generate some xml in a Groovy script
def xml = '<AAA><BBB/><CCC/><BBB/><BBB/><DDD><BBB/></DDD><CCC/></AAA>'
// store in a TestCase property
testRunner.testCase.setPropertyValue('my_property', xml)
如果你想获得更多的幻想,可以使用众多Java XML libraries中的一个,其中一些与SoapUI一起打包。 Here是一种可能性。
对于4,您将再次使用属性扩展:${#TestCase#my_property}