【发布时间】:2015-09-02 09:37:37
【问题描述】:
我正在尝试使用 groovy 构建测试自动化脚本。我的输入模板就像 myXML 变量
我正在从 excel 文件中读取输入数据并替换值并通过 SOAPUI 触发请求。
我的代码是这样的
def myXML ='''<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="xyz.org/common" xmlns:fin="xyz.org/finance">
<fin:myBalance>
<com:loginName>test</com:loginName>
<fin:params>
<fin:name value="username"/>
<fin:Id value="12345"/>
<fin:nickname value="usr1"/>
</fin:params>
</fin:myBalance>
</soapenv:Body> '''
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def reqHolder = groovyUtils.getXmlHolder("InputReq#Request")
reqHolder.namespaces['soapenv']= 'http://schemas.xmlsoap.org/soap/envelope/';
reqHolder.namespaces['com']= 'xyz.org/common';
reqHolder.namespaces['fin']= 'xyz.org/common';
reqHolder.setNodeValue("//fin:myBalance[1]/${newTag.getContents()}[1]",
"${newValue.getContents()}");
如果我想更改节点值,这非常有效。但我无法找到使用 reqHolder 更改属性的方法。说我想改变 fin:Id value="12345" 到 "6789"
有办法改变吗?
【问题讨论】:
-
您做的最简单的事情就是使用属性。即,拥有
<fin:Id value="${#TestCase#Id}"/>并在测试用例 ID 处使用您想要的任何值定义自定义属性。您可以随时使用 groovy 脚本手动或自动更新context.testCase.setPropertyValue('Id', newValue)
标签: xml parsing groovy namespaces identify