[SOAPUI et Groovy] recupérer les donnees du request d'un WebService dans un script groovy
Bonjour,
je travaille su run projet d'uatmatisation de test de WebService et j'utilise l'outil SOAP UI
J'ai écris un script qui me permet de récupérer les données en sortie (dans le Response) d'un WebService, mais je voudrais egalement récupérer les donnees en entrée du WS.Et depusi quelques temps je sèche complètement ca bloque mais comme je en maitrise pas complètement le langage groovy bah je n'avance pas trop.
Quelqu'un pourrait-il m'aider s'il vous plaît?
Pour comprendre mon xml de depart est de cette forme là :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://2016/02/schemas/envelope" xmlns:ns="http:/fr-composite-cst-conformite-v1-vs/01">
<soapenv:Header>
<env:contextHeader>
<!--Optional:-->
<env:serviceName>?</env:serviceName>
<!--Optional:-->
<env:serviceVersion>?</env:serviceVersion>
<!--Optional:-->
<env:functionalID>?</env:functionalID>
<!--Optional:-->
<env:auditID>?</env:auditID>
<!--Optional:-->
<env:stage>?</env:stage>
<!--Optional:-->
<env:subStage>?</env:subStage>
<!--Optional:-->
<env:mep>?</env:mep>
<!--Optional:-->
<env:messaging>
<!--Optional:-->
<env:messageName>?</env:messageName>
<!--Optional:-->
<env:messageID>?</env:messageID>
<!--Optional:-->
<env:correlationID>?</env:correlationID>
<!--Optional:-->
<env:conversationID>?</env:conversationID>
<!--Optional:-->
<env:messageVersion>?</env:messageVersion>
<!--Optional:-->
<env:messageTimestamp>?</env:messageTimestamp>
<!--Optional:-->
<env:messageExpiration>?</env:messageExpiration>
<!--Optional:-->
<env:messagePriority>?</env:messagePriority>
<!--Optional:-->
<env:recipientList>
<!--Zero or more repetitions:-->
<env:endpoint type="?">?</env:endpoint>
</env:recipientList>
<!--Optional:-->
<env:returnAddresses>
<!--Zero or more repetitions:-->
<env:endpoint type="?">?</env:endpoint>
</env:returnAddresses>
<!--Optional:-->
<env:sequence>
<!--Optional:-->
<env:sequenceID>?</env:sequenceID>
<!--Optional:-->
<env:position>?</env:position>
<!--Optional:-->
<env:size>?</env:size>
</env:sequence>
<!--Optional:-->
<env:messagingCustomData>
<!--Zero or more repetitions:-->
<env:property key="?">?</env:property>
</env:messagingCustomData>
</env:messaging>
<!--Optional:-->
<env:requester type="?">
<!--Optional:-->
<env:requesterID>?</env:requesterID>
<!--Optional:-->
<env:language>?</env:language>
<!--Optional:-->
<env:requesterCustomData>
<!--Zero or more repetitions:-->
<env:property key="?" audit="?">?</env:property>
</env:requesterCustomData>
</env:requester>
<!--Optional:-->
<env:identity>
<!--Zero or more repetitions:-->
<env:user type="?">
<!--Optional:-->
<env:securityDomain>?</env:securityDomain>
<!--Optional:-->
<env:value>?</env:value>
<!--Optional:-->
<env:identityCustomData>
<!--Zero or more repetitions:-->
<env:property key="?">?</env:property>
</env:identityCustomData>
</env:user>
<!--Optional:-->
<env:system type="?">
<!--Optional:-->
<env:securityDomain>?</env:securityDomain>
<!--Optional:-->
<env:value>?</env:value>
<!--Optional:-->
<env:identityCustomData>
<!--Zero or more repetitions:-->
<env:property key="?">?</env:property>
</env:identityCustomData>
</env:system>
</env:identity>
<!--Optional:-->
<env:customData>
<!--Zero or more repetitions:-->
<env:property key="?" audit="?">?</env:property>
<!--Optional:-->
<env:data>?</env:data>
</env:customData>
</env:contextHeader>
</soapenv:Header>
<soapenv:Body>
<ns:getConformiteRequest>
<idLME xsi:nil="true" xmlns:xsi="http://2001/XMLSchema-instance"/>
<codeProduit>1234</codeProduit>
<typeActe>VSUP</typeActe>
<numContrat>1</numContrat>
<profilInvest>4</profilInvest>
<profilConn>2</profilConn>
<horizonPlacement>5</horizonPlacement>
<liquidite>1</liquidite>
<age>35</age>
<modeGestion>GP</modeGestion>
</ns:getConformiteRequest>
</soapenv:Body>
</soapenv:Envelope> |
et ma sortie est comme ci :
Code:
1 2 3 4 5 6 7 8
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:getConformiteResponse xmlns:tns="http://fr-composite-cst-conformite-v1-vs/01">
<conformiteActe>false</conformiteActe>
</tns:getConformiteResponse>
</soapenv:Body>
</soapenv:Envelope> |
J'arrive à récupérer la donne qui est dans la balise conformiteActe
mais je n'arrive pas à recupérer le numContrat qui est dans le request.
voici le code groovy utilisé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
import java.util.*
import java.io.*;
def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)
def reponseHolder = groovyUtils.getXmlHolder( testRunner.testCase.testSteps["GetConformite"].testRequest.response.getContentAsXml());
def reponseHolder2 = groovyUtils.getXmlHolder( testRunner.testCase.testSteps["GetConformite"] .getProperty("request").value );
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("c:/Documents/SecuritaireH1ArbitrageResults.txt", true)));
StringBuilder sb = new StringBuilder();
//def numContrat = null;
def nodeContrat = reponseHolder2.getDomNodes("//*:codeProduit");
nodeContrat.each{it->numContrat = it.firstChild.nodeValue.trim();}
//sb.append(numContrat).append(";");
//def items = null
def items = reponseHolder.getDomNodes("//*:conformiteActe");
def itemsCount = items.length;
items.each{it->conformiteActe = it.firstChild.nodeValue.trim();}
sb.append(conformiteActe).append(";");
for(def i = 1; i < itemsCount+1;i++){
//StringBuilder sb = new StringBuilder();
def node = reponseHolder.getDomNodes("//*:conformiteActe["+i+"]/*");
node.each{ it ->
def qname = it.QName.toString()
if(qname.contains("}")){
qname = qname.substring(qname.indexOf("}")+1);
}
if(it.firstChild != null && it.firstChild.firstChild == null){
sb.append(it.firstChild.nodeValue.trim()).append(";");
}
else{
sb.append(";");
}
}
log.info sb.toString()
pw.println(sb.toString());
sb = new StringBuilder();
//sb.append(numContrat).append(";");
sb.append(conformiteActe).append(";");
}
pw.close(); |