如何使用groovy脚本动态地将子元素添加到SOAPUI中的SOAP请求
发布时间:2020-12-14 16:29:28 所属栏目:大数据 来源:网络整理
导读:我有一个请求接受1..n项目添加到购物篮.默认请求有一个带有一些子元素的“item”元素,我想添加N个没有带子元素的项目我可以使用creaeElementNS添加Item父元素现在我想将子元素添加到“item”中,如下所示,可以有人对此有所了解 basket:itembasket:itemId222/b
我有一个请求接受1..n项目添加到购物篮.默认请求有一个带有一些子元素的“item”元素,我想添加N个没有带子元素的项目我可以使用creaeElementNS添加Item父元素现在我想将子元素添加到“item”中,如下所示,可以有人对此有所了解
<basket:item> <basket:itemId>222</basket:itemId> <basket:itemCode>DEF</basket:itemCode> <basket:item> Groovy脚本 def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context ) def holder = groovyUtils.getXmlHolder( "createBasket#Request" ) def parentnode = holder.getDomNode( "//basket:createBasketRequest" ) def basketTotal= holder.getDomNode( "//basket:itemsTotal" ) def itemsTag = requestDoc.createElementNS(parentnode.getNamespaceURI(),"item") parentnode.insertBefore(itemsTag,basketTotal) holder.updateProperty() 电流输出 <basket:createBasketRequest> <basket:item> <basket:itemId>111</basket:itemId> <basket:itemCode>ABC</basket:itemCode> </basket:item> <basket:item> </basket:item> <basket:itemsTotal>500.00</basket:itemsTotal> </basket:createBasketRequest> 期望的输出 <basket:createBasketRequest> <basket:item> <basket:itemId>111</basket:itemId> <basket:itemCode>ABC</basket:itemCode> </basket:item> <basket:item> <basket:itemId>222</basket:itemId> <basket:itemCode>DEF</basket:itemCode> <basket:item> <basket:itemsTotal>500.00</basket:itemsTotal> </basket:createBasketRequest> 编辑:我正在使用soapUI和TestCase选项,在添加篮子请求步骤之前有一个GroovyScript步骤,groovy脚本在实际发送请求之前准备添加篮子请求,例如,如果我的测试用例提到它应该请求默认的一个项目,所以我不必担心添加另一个Item元素但是当我的testcase说2个项目时我必须创建第二个Items元素(以及子元素)并在实际发送添加篮子请求之前使用groovy脚本步骤准备添加篮子请求 解决方法
不确定它是否可行(我不使用SoapUI),但这有帮助吗?
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context ) def holder = groovyUtils.getXmlHolder( "createBasket#Request" ) def parentnode = holder.getDomNode( "//basket:createBasketRequest" ) def basketTotal = holder.getDomNode( "//basket:itemsTotal" ) def nodeText = '''<basket:item> | <basket:itemId>222</basket:itemId> | <basket:itemCode>DEF</basket:itemCode> |</basket:item>'''.stripMargin() def nodeHolder = new com.eviware.soapui.support.XmlHolder( nodeText ) def nodeItem = nodeHolder.getDomNode( "//basket:item" ) def importNode = requestDoc.importNode( nodeItem,true ) parentnode.insertBefore( importNode,basketTotal ) holder.updateProperty() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |