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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();