2017-08-09 3 views
-1

groovyを使用して、 "return" "return"と "arg1" "arg1"の間の引数として、スクリプティング別のリクエストの引数としてSOAPリクエストの全体の応答をコピーする

私は各タグをパラメータ化しようとしましたが、それを行うことは難しく、 "return"と "\ return"の間で本文全体をコピーする方法があるかどうかを知りたいと思っていました。

私の質問が意味をなさないのかどうかわかりませんが、私はStack-Overflowを初めて使っていて、soapuiとgroovyを学びたいと思います。私の要求の

応答は以下の通りである:提供される任意の助けを事前に

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <ns2:getxyz1Response xmlns:ns2="xyz.com"> 
     <return> 
      <xyz1>70</xyz1> 
      <balance>33.0000000000</balance> 
      <carriedBalance>0E-10</carriedBalance> 
      <createDatetime>2017-08-09T00:00:00Z</createDatetime> 
      <createTimeStamp>2017-08-09T22:48:24.423Z</createTimeStamp> 
      <currencyId>1</currencyId> 
      <deleted>0</deleted> 
      <dueDate>2017-08-09T00:00:00Z</dueDate> 
      <id>43194</id> 
      <xyz1>1</xyz1> 
      <xyz1> 
       <amount>10.0000343500</amount> 
       <amountAsDecimal>10.0000343500</amountAsDecimal> 
       <callCounter>0</callCounter> 
       <deleted>0</deleted> 
       <description>testCategory90795 Period from 30/03/2017 to 29/04/2017</description> 
       <id>113492</id> 
       <itemId>220</itemId> 
       <percentage>0</percentage> 
       <price>10.0000343500</price> 
       <priceAsDecimal>10.0000343500</priceAsDecimal> 
       <quantity>1.0000000000</quantity> 
       <quantityAsDecimal>1.0000000000</quantityAsDecimal> 
       <sourcexyz1Id>22143</sourcexyz1Id> 
      </xyz1> 
      <xyz1> 
       <amount>10.0000343500</amount> 
       <amountAsDecimal>10.0000343500</amountAsDecimal> 
       <callCounter>0</callCounter> 
       <deleted>0</deleted> 
       <description>testCategory90795 Period from 30/04/2017 to 29/05/2017</description> 
       <id>113493</id> 
       <itemId>220</itemId> 
       <percentage>0</percentage> 
       <price>10.0000343500</price> 
       <priceAsDecimal>10.0000343500</priceAsDecimal> 
       <quantity>1.0000000000</quantity> 
       <quantityAsDecimal>1.0000000000</quantityAsDecimal> 
       <sourcexyz1Id>22143</sourcexyz1Id> 
      </xyz1> 
      <xyz1> 
       <amount>10.0000343500</amount> 
       <amountAsDecimal>10.0000343500</amountAsDecimal> 
       <callCounter>0</callCounter> 
       <deleted>0</deleted> 
       <description>testCategory90795 Period from 30/05/2017 to 29/06/2017</description> 
       <id>113494</id> 
       <itemId>220</itemId> 
       <percentage>0</percentage> 
       <price>10.0000343500</price> 
       <priceAsDecimal>10.0000343500</priceAsDecimal> 
       <quantity>1.0000000000</quantity> 
       <quantityAsDecimal>1.0000000000</quantityAsDecimal> 
       <sourcexyz1Id>22143</sourcexyz1Id> 
      </xyz1> 
      <xyz1> 
       <amount>3.0000103050</amount> 
       <amountAsDecimal>3.0000103050</amountAsDecimal> 
       <callCounter>0</callCounter> 
       <deleted>0</deleted> 
       <description>GST</description> 
       <id>113495</id> 
       <itemId>45</itemId> 
       <percentage>0</percentage> 
       <price>10.0000000000</price> 
       <priceAsDecimal>10.0000000000</priceAsDecimal> 
       <quantity>1.0000000000</quantity> 
       <quantityAsDecimal>1.0000000000</quantityAsDecimal> 
       <sourcexyz1Id>22143</sourcexyz1Id> 
      </xyz1> 
      <isReview>0</isReview> 
      <number>40677</number> 
      <orders>44652</orders> 
      <xyz1Attempts>0</xyz1Attempts> 
      <statusDescr>Unpaid</statusDescr> 
      <statusId>2</statusId> 
      <toProcess>1</toProcess> 
      <total>33.0000000000</total> 
      <xyz1Id>22143</xyz1Id> 
     </return> 
     </ns2:getxyz1Response> 
    </soap:Body> 
</soap:Envelope> 

感謝。

答えて

0

1 /ソースtestStep(以下の例では「SOAP Request」という名前)からXMLを取得し、「return」ノードをターゲットにする必要があります。

def sourceTCresponse = context.expand('${SOAP Request#Response}') 
def sourceTCresponse_XML = new XmlParser().parseText(sourceTCresponse) 
def targetNode = sourceTCresponse_XML.'**'.find {it.name() == 'return'} 

2 /あなたはあなたからXMLを取得する必要があるがその後2から1 /からARG1ノードにノードを追加/

def targetTestStep = testRunner.testCase.testSteps["SOAP Request2"] 
def targetTestStep_Request = targetTestStep.getPropertyValue("Request") 
def targetTC_XML = new XmlParser().parseText(targetTestStep_Request) 

3 testStep(以下の例では 'SOAP Request2' という名前)

をターゲットそして/

targetTC_XML.'**'.find {it.name() == 'arg1'}.append(targetNode) 

4 /列

def xmlOutput = new StringWriter() 
def xmlNodePrinter = new XmlNodePrinter(new PrintWriter(xmlOutput)) 
xmlNodePrinter.print(targetTC_XML) 
String finalXML_asString = xmlOutput.toString() 
、最終XMLに変換

5 /この文字列をターゲットテストステップに書き込みます

targetTestStep.setPropertyValue("Request", finalXML_asString)` 
関連する問題