soapUI : tester l’enchainement de Web Services
Dans un précédent article, je vous ai montré comment tester unitairement un Web Service. Cette fois-ci, nous allons aller un peu plus loin en testant l’enchainement de plusieurs Web Services.
Comme nous l’avons vu chacun de nos tests unitaires se trouve dans un arbre. Il est alors possible de lancer l’ensemble des tests de la suite, ou toutes les étapes d’un scénario, simplement en double cliquant sur le nœud correspondant de l’arbre. (Nœuds : TestSuite ou TestCase)
Une fenêtre s’ouvre et permet de voir les résultats
A peine plus compliqué, il est aussi possible de récupérer une valeur dans une réponse et de l’injecter dans le test suivant.
Exemple d’utilisation : Dans nos jeux de tests, on veut réaliser l’enchainement suivant :
- Créer une commande (createOrder)
- Annuler la commande qui vient d’être créée (cancelRequestNumber)
sachant que ce dernier service prend en paramètre un « request number » qui est renvoyé dans la réponse du « createOrder ».
Pour récupérer cette valeur et remplir notre requête « cancelRequestNumber », on utilise la fonctionnalité offerte par soapUI : le « Property Transfer ».
La valeur à récupérer (la « Source ») :
Le champ à remplacer (la « Target ») :
On ajoute un « step » ‘Property Transfer’ à notre Test Case « PropTransfer » :
On donne un nom au remplacement automatique qui sera effectué, à chaque exécution des tests :
On configure les chemins vers les champs qui nous intéressent :
![]()
Les chemins représentent les nœuds XML, de la requête et de la réponse SOAP, à parcourir pour atteindre les champs voulus
On place maintenant le « step » ‘Property Transfer’ entre les 2 tests (createOrder et cancelRequestNumber), de façon à obtenir un enchainement logique dans notre TestCase ‘PropTransfer’ :
On peut maintenant dérouler l’ensemble du Test Case
Merci pour cet article très utile pour tous ceux qui travaillent avec les web services.
Le test du web service n’est jamais aisé, cet outil devrait nous simplifier la vie.
Ça fonctionne aussi pour choper des valeurs dans une requête SOAP qui contient des variables ?
J’avais trouvé context.expand() pour ça, dans un step Groovy, mais pas un Property Transfer.
Salut Marmotte,
Je ne suis pas sûr d’avoir compris ta question
Tu veux récupérer une variable dans la requête SOAP « Source », c’est bien ça ?
Par exemple, si dans ta requête SOAP Source, tu as mis :
${#Project#login}
tu veux être capable de récupérer la valeur de « Project#login » pour la placer dans une autre requête ?
Bonjour,
)
La version 3.5.1 permet les requêtes JDBC (Oracle, Informix), on peut aussi envoyer les entrées comme les sorties dans les variables (global.properties dans Préférences), puis s’en servir dans d’autres requêtes.
J’utilise cet outil au quotidien, c’est du bonheur !
Bonjour,
Je n’ai pas le wizard dans ma version (pourtant la dernière) ; est-ce une option ? du coup, vu que je ne suis pas un cador du Xpath, je ne m’en sors pas sur mon wsdl.
Avez-vous une idée ?
je n’arrive pas a declarer le chemin ???
comment tu sais ce que tu met dans le declare namespace?
@madas
Tu peux cliquer sur le bouton « ns: » pour déclarer automatiquement les namespace.
@Vidocq
Le wizard dont tu parles est une fonctionnalité de la version Pro.