1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2012
    Messages : 44
    Points : 20
    Points
    20

    Par défaut [SOAP UI et Groovy] recupérer des données du request d'un Webervice dans un script groovy

    Bonjour,

    je travaille su run projet d'automatisation 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 également récupérer les donnees en entrée du WS.Et depuis quelques temps je sèche complètement ca bloque mais comme je ne 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();

  2. #2
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 013
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 013
    Points : 1 755
    Points
    1 755

    Par défaut

    mais je n'arrive pas à recupérer le numContrat qui est dans le request.
    Mais, que voulez-vous? Si vous cherchez codeProduit, il sort naturellement codeProduit et pas numContrat ?!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //def nodeContrat = reponseHolder2.getDomNodes("//*:codeProduit");
    def nodeContrat = reponseHolder2.getDomNodes("//*:numContrat");

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/02/2017, 18h20
  2. Réponses: 8
    Dernier message: 05/02/2007, 13h28
  3. Réponses: 12
    Dernier message: 04/01/2007, 17h31
  4. Réponses: 2
    Dernier message: 28/05/2006, 23h31
  5. Réponses: 2
    Dernier message: 20/01/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo