替换/更新groovy中的现有节点值

替换/更新groovy中的现有节点值,groovy,soapui,Groovy,Soapui,下面是我的示例xml <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <MessageHeader xmlns:ns3="http://csi.cingular.com/CSI/Namespaces/Types/Public/CingularDataModel.xsd" xmlns:ns39="http:

下面是我的示例xml

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">    <SOAP-ENV:Header>
      <MessageHeader xmlns:ns3="http://csi.cingular.com/CSI/Namespaces/Types/Public/CingularDataModel.xsd" xmlns:ns39="http://csi.cingular.com/CSI/Namespaces/Types/Public/MessageHeader.xsd">
         <ns39:TrackingMessageHeader>
            <ns3:infrastructureVersion>86</ns3:infrastructureVersion>
            <ns3:version>222</ns3:version>
            <ns3:messageId>146100035386400076</ns3:messageId>
            <ns3:originatorId>PEEPS</ns3:originatorId>
            <ns3:timeToLive>120000</ns3:timeToLive>
            <ns3:dateTimeStamp>2016-04-18T20:16:19.387Z</ns3:dateTimeStamp>
         </ns39:TrackingMessageHeader>
         <ns39:SecurityMessageHeader>
            <ns3:userName></ns3:userName>
            <ns3:userPassword></ns3:userPassword>
         </ns39:SecurityMessageHeader>
         <ns39:SequenceMessageHeader>
            <ns3:sequenceNumber>1</ns3:sequenceNumber>
            <ns3:totalInSequence>1</ns3:totalInSequence>
         </ns39:SequenceMessageHeader>
      </MessageHeader>    </SOAP-ENV:Header>    <SOAP-ENV:Body>
      <InquireEnterpriseOrderListRequest xmlns="http://csi.cingular.com/CSI/Namespaces/InquireEnterpriseOrderListRequest.xsd">
         <SelectionCriteria>
            <organizationId>214256542</organizationId>
         </SelectionCriteria>
      </InquireEnterpriseOrderListRequest>    </SOAP-ENV:Body> </SOAP-ENV:Envelope>

86
222
146100035386400076
窥视
120000
2016-04-18T20:16:19.387Z
1.
1.
214256542
我想用从文件读取的值替换“organizationId”这个标记值,并在节点中更新值后使用
testRunner.runTestStepByName(“InquireEnterpriseOrderList”)
触发它


在理解如何使用新值更新/替换节点以及如何重新触发API以捕获多个输入的结果时,是否有任何帮助。

下面是您需要执行的操作:

  • 读取文件提取所需的值并将其存储在测试用例级别的自定义属性。假设您正在使用groovy脚本测试步骤来执行此操作。因此,添加以下附加代码:
//您可以从代码中赋值,目前使用虚拟赋值
def requiredvalue='123453'
//将该值存储在测试用例级别的自定义属性上,比如组织ID
context.testCase.setPropertyValue('ORGANIZATION_ID',requiredValue.toString())
  • 现在,您不需要更新请求。相反,请使用如下所示的属性扩展,以便SoapUI自动处理proerties中所需的值

    ${#TestCase#ORGANIZATION#u ID}


Venki,你有机会尝试这个解决方案吗?下面的代码片段中使用了这个errorcontext.testCase.setPropertyValue('ORGANIZATION_ID',temp.toString())log.info context.testCase.setPropertyValue('ORGANIZATION_ID',temp.toString())同样,在请求中,它被捕获为2017年8月29日星期二09:53:50:信息:${#InquireEnterpriseOrderListTestCase#ORGANIZATION_ID},当其被触发时,gettoing错误为“遇到一个后IVP XML验证错误:cvc数据类型valid.1.2.1:”不是“整数”的有效值。请详细说明。我使用了以下代码段,例如(int i=0;ii我可以看到所需的结果,根据我的要求修改了代码。非常感谢help@venkikasula,