Discussion: SOAP-UI script groovy

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2015
    Messages : 144
    Points : 47
    Points
    47

    Par défaut SOAP-UI script groovy

    Bonjour,

    J'ai un TestSuite que j'ai nommé ComplexTestSuite. Sur ce dernier, un TestCase nommé Operation

    Sur ce TestCase (Operation):

    1-j'ai ajouté une propriété (subscriberId).

    2- Ainsi, j'ai ajouté request soap nommé GET TEST1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <SubscriberId> $ {Properties # SubscriberId} </ SubscriberId>
    le code suivant pour exécuter un seul subscriberId et qui permet de charger les propriétés d'un fichier MSISDN.txt et initialiser celles définies précédemment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    log.info("Chargement des propriétés à partir du fichier MSISDN.txt")
    props = new java.util.Properties()
    fis = new FileInputStream("c:/MSISDN.txt")
    props.load(fis)
    subscriberId = props.getProperty("MSISDN")
    targetStep = testRunner.testCase.getTestStepByName("Properties")
    targetStep.setPropertyValue("subscriberId", subscriberId)
    log.info("subscriberId : " + subscriberId)

    Si j'ai plusieurs valeurs de subscriberId, comment exécuter tous ces valeurs en un seul clique ?

    J'ai référencé sur ce lien http://mbaron.developpez.com/tutorie...-services-web/

    Merci d'avance.

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

    Par défaut

    Mais ça ne se fait pas d'écrire multiple de lignes dans le fichier de propriétés avec la même clé MSISDN, n'est-ce pas ? Une solution peut prendre une forme comme une chaîne de données délimitées par la virgule...
    ou autres. Dans le cas-là, on fait exploser la propriété lite et assigner chaque composant à une propriété d'utilisateur de TestCase (ou quelque chose de ce genre...)
    Code groovy : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    subscriberId = props.getProperty("MSISDN")
    // etc etc...
    int i=0
    subscriberId.split(",").each {
        targetStep.setPropertyValue("subscriberId"+"_"+i, it.trim())
        i++
    }
    Et on établie les propriétés subsriberId_0, subsriberId_1 etc. Dans le template de requête on les fait lier comme on fait normalement... Ce n'est qu'une façon de le faire, évidemment.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2015
    Messages : 144
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Mais ça ne se fait pas d'écrire multiple de lignes dans le fichier de propriétés avec la même clé MSISDN, n'est-ce pas ? Une solution peut prendre une forme comme une chaîne de données délimitées par la virgule...
    ou autres. Dans le cas-là, on fait exploser la propriété lite et assigner chaque composant à une propriété d'utilisateur de TestCase (ou quelque chose de ce genre...)
    Code groovy : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    subscriberId = props.getProperty("MSISDN")
    // etc etc...
    int i=0
    subscriberId.split(",").each {
        targetStep.setPropertyValue("subscriberId"+"_"+i, it.trim())
        i++
    }
    Et on établie les propriétés subsriberId_0, subsriberId_1 etc. Dans le template de requête on les fait lier comme on fait normalement... Ce n'est qu'une façon de le faire, évidemment.
    Je dois avoir plusieurs request soap, comme ceci:

    <SubscriberId> $ {Properties # SubscriberId_0} </ SubscriberId>

    <SubscriberId> $ {Properties # SubscriberId_1} </ SubscriberId>
    .....
    C'est possible 1 seul request pour toutes ces valeurs de MSISDN.

    Merci d'advance.

  4. #4
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 060
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 060
    Points : 1 838
    Points
    1 838

    Par défaut

    Oui, bien sûr. Quand le nombre d'occurrence d'élément SubscribeId est important ou bien tout à fait variable, une simple expansion de propriété pour chacune d'eux avec la contrainte du nombre fixe d'occurrence devient très inconvenant voire impossible en cas d'un nombre variable. Dans ces cas on peut toujours recourir au script groovy pour faire reconstruire le template partiellement de la partie des SubscribeId ou parfois avec plus de contrôle la requête entière. Le script setup ou le TestStep Groovy Script peut saisir le contenu de la requête du TestStep de soap requête et l'imposer ou le modifier tant qu'on veut. Dans ces cas, le script se fait disponible l'arsenal entier de la technologie de parseur d'xml (par exemple se fait construire une boucle sur SubscribeId semblable à l'exemple d'assignation de propriété desus). Ce n'est donc pas étonnant qu'on arrive à faire ce qu'on voudrait très à l'aise parce que la technologie ainsi disponible est très riche. Voilà!

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2015
    Messages : 144
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Oui, bien sûr. Quand le nombre d'occurrence d'élément SubscribeId est important ou bien tout à fait variable, une simple expansion de propriété pour chacune d'eux avec la contrainte du nombre fixe d'occurrence devient très inconvenant voire impossible en cas d'un nombre variable. Dans ces cas on peut toujours recourir au script groovy pour faire reconstruire le template partiellement de la partie des SubscribeId ou parfois avec plus de contrôle la requête entière. Le script setup ou le TestStep Groovy Script peut saisir le contenu de la requête du TestStep de soap requête et l'imposer ou le modifier tant qu'on veut. Dans ces cas, le script se fait disponible l'arsenal entier de la technologie de parseur d'xml (par exemple se fait construire une boucle sur SubscribeId semblable à l'exemple d'assignation de propriété desus). Ce n'est donc pas étonnant qu'on arrive à faire ce qu'on voudrait très à l'aise parce que la technologie ainsi disponible est très riche. Voilà!
    Résumé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <SubscriberId> $ {Properties # SubscriberId} </ SubscriberId>
    marche seulement avec un SubscriberId non pour plusieurs.

    Si je veux plusieurs SubscriberId il faut plusieurs request soap pour votre solution. c'est ça ?

  6. #6
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 060
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 060
    Points : 1 838
    Points
    1 838

    Par défaut

    Si je veux plusieurs SubscriberId il faut plusieurs request soap pour votre solution. c'est ça ?
    Non, c'est le schéma du service web qui détermine ça. Si maxOccurs="1", un seul, et testRunner fait exécuter multiple de fois. Si maxOccurs="unbounded", une seule requête avec multiple SubscribedId et testRunner fait exécuter une seule fois. Mais, pourquoi la question ? Vous ne savez même pas quel genre du service vous travaillez avec ?!

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2015
    Messages : 144
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Non, c'est le schéma du service web qui détermine ça. Si maxOccurs="1", un seul, et testRunner fait exécuter multiple de fois. Si maxOccurs="unbounded", une seule requête avec multiple SubscribedId et testRunner fait exécuter une seule fois. Mais, pourquoi la question ? Vous ne savez même pas quel genre du service vous travaillez avec ?!
    OK. Moi j'utilise soap ui. Comment connaitre ça?
    Merci d'avance.

  8. #8
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 060
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 060
    Points : 1 838
    Points
    1 838

    Par défaut

    Il n'y a pas de raison. Quand on crée un soap projet - et ce n'est pas de rest projet, j'espère - on est obligé normalement de donner la location du document wsdl pour que le projet soit crée. Si on sait où se trouve le wsdl, à priori, le schéma des types des éléments devrait à sa disposition. Dans la projet-vu page, on peut retrouver la location. Comment on peut travailler avec soapui comme un métier en soi, sans connaître la technologie du service web, tant peu que soit... je ne sais pas.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2015
    Messages : 144
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Il n'y a pas de raison. Quand on crée un soap projet - et ce n'est pas de rest projet, j'espère - on est obligé normalement de donner la location du document wsdl pour que le projet soit crée. Si on sait où se trouve le wsdl, à priori, le schéma des types des éléments devrait à sa disposition. Dans la projet-vu page, on peut retrouver la location. Comment on peut travailler avec soapui comme un métier en soi, sans connaître la technologie du service web, tant peu que soit... je ne sais pas.
    Je vous informe que je suis débutant.
    Merci pour vos réponses.

Discussions similaires

  1. Scripts SOAP-UI via Groovy.
    Par hichem0550 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/08/2017, 09h40
  2. Réponses: 1
    Dernier message: 16/02/2017, 21h00
  3. Exécuter un script Groovy en Java en spécifiant "this"
    Par guillaumell dans le forum Groovy
    Réponses: 0
    Dernier message: 28/09/2011, 09h54
  4. Restrictions des librairies sur un script Groovy
    Par radtriste dans le forum Groovy
    Réponses: 1
    Dernier message: 26/05/2009, 15h36

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