私は Groovy スクリプトの初心者であり、現在直面している問題の解決策を見つけるためにあなたの助けを求めています。
私の要件は、テスト データ入力に基づく反復ごとに、特定のノードまたは特定のノードを SoapRequest から削除する必要があるということです。これを実現するために、2 つの同一の SOAP リクエスト (オリジナルと変更済み) を作成しました。
Groovy スクリプトを使用して、各反復後に変更された SOAP リクエストのコンテンツを元の SOAP リクエストのコンテンツで復元しようとしています。(反復 1 - 削除するノードがあり、2 番目の反復では削除するノードが保持されます - これが元のコンテンツで要求を復元する理由です)。つまり、soap リクエストのクローンを作成して、元のリクエストを変更せずにクローン リクエストに対してノード削除操作を実行できるようにします。
以下は、私の TestSuite でのテストステップです。
データソース オリジナル (SoapRequest) Groovy スクリプト。変更 (SoapRequest)
SoapRequest (オリジナル)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>
<idm:request>
<idm:dataset-searches>
<idm:profile-name></idm:profile-name>
</idm:dataset-searches>
<idm:individual-name>
<idm:family-name>ABC</idm:family-name>
<idm:first-given-name>DEF</idm:first-given-name>
</idm:individual-name>
<idm:date-of-birth>1985-12-12</idm:date-of-birth>
</idm:request>
</soapenv:Body>
</soapenv:Envelope>
私のGroovyスクリプトは以下の通りです
def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder("Modified#Request")
ReqHolder2.removeDomNodes("//idm:request")
ReqHolder2.updateProperty()
ReqHolder2 ["//soapenv:Body"] = context.expand( '${Original#Request#//idm:request}' )
ReqHolder2.updateProperty()
上記の groovy スクリプトを実行すると、Modified リクエストは元のリクエストのコンテンツで更新されますが、CDATA とスキーマへの参照が含まれます。
SoapRequest (変更)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>***<![CDATA[<idm:request xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">***
<idm:dataset-searches>
<idm:profile-name/>
</idm:dataset-searches>
<idm:individual-name>
<idm:family-name>ABC</idm:family-name>
<idm:first-given-name>DEF</idm:first-given-name>
</idm:individual-name>
<idm:date-of-birth>1985-12-12</idm:date-of-birth>
</idm:request>**]]>**</soapenv:Body>
</soapenv:Envelope>
誰かがこれで私を助けてくれれば幸いです。また、この要件を実装するために、Groovy で他の代替方法を知ったり学んだりできれば幸いです。
ありがとうございました。