learn advanced soapui groovy scripting concepts soapui tutorial 9
Les didacticiels SoapUI précédents ont été une introduction à SoapUI et à ses concepts de programmation. Nous allons désormais passer à des concepts de script Groovy plus avancés. Soyons cela avec Instructions de flux conditionnelles - instructions booléennes et itératives. Ensuite, nous passerons à la collection de tableaux.
Ceci est le 9e tutoriel de notre Série de tutoriels SoapUI .
Les instructions conditionnelles sont utilisées pour contrôler le flux de l'exécution. Voici différents types d'instructions conditionnelles dans Groovy.
Ce que vous apprendrez:
- #1. Commandes ou déclarations logiques:
- # 2. Déclarations en boucle ou itératives:
- # 3. Collection de tableaux:
- Conclusion
- lecture recommandée
#1. Commandes ou déclarations logiques:
Ces déclarations donnent vrai ou faux en fonction des conditions logiques. Ils sont ET, OU et NON. Les symboles utilisés sont «&& (et)», «|» | et '! (Exclamation) »respectivement. Le comportement est tel que mentionné dans la table de vérité:
passerelle par défaut non disponible windows 10
Table de vérité de l'opérateur «Et»:
Table de vérité de l'opérateur 'OU':
Opérateur 'NOT' à des fins de négation
Instruction conditionnelle: les langages de programmation prennent en charge les instructions conditionnelles suivantes:
- Si… instruction else
- If… else if… else instruction
- Opérateur ternaire
- Instruction Switch
A) if… else syntaxe du bloc:
si
{
}
Autre
{
}
Dans cette syntaxe, quand elle est vraie, l'instruction donnée sera exécutée. Nous devons mettre les instructions entre accolades si le bloc contient plus d'une ligne. Cela indique que le bloc entier doit s'exécuter en fonction de la condition.
Regardez l'exemple d'extrait de code.
int a=100 int b=200 if (a>b) { log.info('B is greater than A'); } else { log.info('A is greater or both are equal'); }
Une sinon… l'instruction ne doit contenir qu'un seul bloc ELSE.
B) Plusieurs blocs conditionnels: if… else if… else syntaxe
si
{
}
Sinon si
{
}
Autre
{
}
Si… sinon si… sinon la déclaration est peu différente de sinon… déclaration - en termes qu'il a sinon si bloquer. Ce bloc est utilisé pour ajouter plusieurs conditions. Regardez l'exemple suivant.
int a=100 int b=200 int c=300 if (a>b && a>c) { log.info('A is greater than B and C'); } else if (b>a && b>c) { log.info('B is greater than A and C'); } else { log.info('C is greater than A and B or All are equal numbers'); }
Et regardez la capture d'écran de sortie pour le script ci-dessus: Veuillez également l'utiliser comme référence pour l'exemple d'opérateur boolen:
C) Opérateur ternaire:
Cet opérateur fonctionne de manière similaire à sinon déclaration. Il a deux opérandes tels que le point d'interrogation (TRUE) et deux-points pour les instructions FALSE / default.
def A = 100
def B = (A> 100) ? «PASS»: «FAIL»
log.info (B)
Voici la capture d'écran du script ci-dessus.
D) Boîtier de commutation: Cette instruction autorise plusieurs branches conditionnelles avec des valeurs différentes. Il prend également en charge la comparaison des références d'objet de classe, des expressions régulières, des collections telles que des tableaux, des listes, etc.
Changer
{
Cas :
;
Pause;
Cas :
;
Pause;
défaut:
;
}
Le Cas les instructions comparent les valeurs avec les changer valeur de cas. S'il s'agit d'une correspondance, le bloc de cas correspondant est exécuté. Une fois le bloc exécuté, il doit être arrêté par le mot clé «break». Si nous avons manqué le mot-clé «break» à la fin de l'instruction case, l'exécution sera déplacée vers l'instruction case suivante - et cela peut ne pas être nécessaire. Dans le cas où aucun des cas n'est vrai, défaut block sera exécuté. Veuillez noter que Groovy prend en charge tous les principaux opérateurs et mots-clés car il est intégré aux bibliothèques java.
def country='India' switch(country) { case 'Japan': log.info('Country matched with 1st case statement'); break; case 'Australia': log.info('Country matched with 2st case statement'); break; case 'India': log.info('Country matched with 3st case statement'); break; default: log.info('None of the matches available :('); }
Here’s the output screenshot for the above script.
# 2. Déclarations en boucle ou itératives:
Celles-ci permettent la répétition chaque fois que nous en avons besoin et sont particulièrement utiles pour les tests basés sur les données.
Par exemple, supposons que nous avons quelques codes postaux dans un fichier Excel. Pour récupérer tous les codes postaux un par un du fichier Excel, et le transmettre au service c.-à-d. GetSuppliersZipcode , nous pouvons utiliser des instructions itératives. SoapUI fournit également une fonctionnalité alternative appelée étapes de test de source de données et de boucle de source de données (disponible uniquement dans les versions d'essai et sous licence de SoapUI Pro).
Nous pouvons utiliser ces instructions itératives suivantes dans le script groovy:
- Pour boucle
- Alors que la boucle
Pour la boucle:
pour (; ; )
{
;
}
Dans la syntaxe ci-dessus, l'initialisation indique le point de départ de la boucle et en fonction de la condition, la boucle continuera ou arrêtera l'exécution.
Voir le script ci-dessous
pour (int i = 1; i<=10; i++)
{
log.info («Boucle itérée» + i + «fois»);
}
Le script ci-dessus produira les résultats comme indiqué dans la capture d'écran suivante.
Utilisons maintenant l'instruction de contrôle et l'instruction itérative dans notre monde de test réel. Suivez les étapes ci-dessous:
- Ajoutez Testcase avec le nom souhaité. J'ai créé en tant que 'T9_GetSupplierByZipCode_TestCase'.
- Ajoutez ensuite une propriété nommée 'Property_Zipcode'
- Ajoutez l'étape de demande de test pour le service «GetSupplierByZipCode» et placez le nom de la propriété dans la demande comme indiqué sur la capture d'écran.
Ajoutez une étape de test de script groovy comme indiqué dans la capture d'écran suivante.
Dans l'éditeur de script groovy, écrivez le script suivant.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
Le résultat suivant est reçu dans le journal ainsi que dans l'écran de réponse du service.
(Cliquez sur l'image pour une vue agrandie)
tests unitaires vs tests fonctionnels vs tests d'intégration
Boucle «while»:
Syntaxe:
tandis que
{
;
}
La logique ci-dessus peut également être implémentée en utilisant la boucle «while».
Par conséquent, l'essentiel est que l'instruction itérative peut être utilisée pour:
- Exécutez les cas de test ou les étapes de test à plusieurs reprises
- Contrôlez le déroulement de l'exécution via les instructions de contrôle.
# 3. Collection de tableaux:
La collection Array permet de stocker plusieurs valeurs dans une seule variable ou objet. L'index du tableau commence à zéro par défaut et nous devons utiliser cet index avec le nom du tableau pour accéder à la valeur correspondante stockée dans le tableau. Syntaxe pour déclarer des tableaux dans un script groovy:
arrayName = nouvel objet (5) ou,
arrayName = nouvel objet (10) () ou,
arrayName = nouvel objet (10) (10) ()
Noter : Lors de la déclaration des tableaux, nous devons spécifier la taille initiale sinon cela générera une erreur de compilation. Voici l'exemple simple du tableau unidimensionnel.
ArrayObj = nouvel objet (5);
ArrayObj (0) = 'Testcase1';
ArrayObj (1) = 'Testcase2';
ArrayObj (2) = 'Testcase3';
ArrayObj (3) = 'Testcase4';
ArrayObj (4) = 'Testcase5';
Maintenant, implémentons cela dans nos étapes de test régulières. Ajoutez donc une propriété, une demande de test et une étape de test de script sous la suite de tests du projet, comme indiqué dans la capture d'écran suivante.
Et puis double-cliquez sur l'étape de test de script et écrivez le script suivant.
def MAX_LIMIT = 5 def zipCodes = new Object(MAX_LIMIT) zipCodes(0) = '92704' zipCodes(1) = '99362' zipCodes(2) = '31401' zipCodes(3) = '90247' zipCodes(4) = '87102' int i=0; while (i<5) { if (i<5) { testRunner.testCase.testSteps('Properties'). setPropertyValue('Property_Zipcode',zipCodes(i)); def testStep = testRunner.testCase.testSteps('GetSupplierByZipCode'); testStep.run(testRunner,context); log.info('Loop executed ' + i + ' times'); } i++; } log.info('Testcase execution is completed....');
In this script, we initialized array object as 5 and assigned five zip codes in each array location respectively. Next part of the script is iterative block. Here we iterate the loop up to 5 times. Each time array value will be assigned to the property and then move to GetSupplierByZipCode web service to pass this array value in the request. After that, service step will be executed with the zip code. Finally we will get the following message in the log as shown in the screenshot.
Les tableaux sont donc très utiles pour gérer plusieurs éléments avec différents types. Plus de pratique favorisera une meilleure compréhension et une meilleure facilité d'utilisation.
Conclusion
C'était une introduction générale avec des exemples de blocs conditionnels ou logiques qui incluent IF… ELSE, des instructions de commutation et ternaires. Ces instructions sont contrôlées par les opérateurs logiques tels que AND, OR, NOT. Comparé au bloc «commutateur», le bloc «si» est simple et rapide. Pour gérer plusieurs collections telles que des tableaux pour itérer le processus de test, les instructions de boucle sont essentielles.
Prochain tutoriel SoapUI # 10 : Dans le prochain article, nous allons apprendre «Scripting Groovy orienté objet dans SoapUI».
Des concepts plus utiles sont à venir dans les prochains didacticiels SoapUI Groovy Script. Continuez à lire et partagez vos expériences et questions dans les commentaires ci-dessous.
lecture recommandée
- Comment gérer l'exception dans les scripts SoapUI Groovy - Tutoriel SoapUI # 11
- Comment écrire un script Groovy de base dans SoapUI - Tutoriel SoapUi # 6
- Comment utiliser les propriétés dans SoapUI Groovy Script - Tutoriel SoapUI # 7
- Tutoriels Eclipse détaillés pour les débutants
- 4 Caractéristiques importantes de SoapUI Pro pour le public professionnel - Tutoriel SoapUI # 12
- 15+ didacticiels SoapUI: le meilleur outil de test d'API de services Web
- Processus de téléchargement et d'installation SoapUI étape par étape - Tutoriel SoapUI # 3
- Un guide SoapUI rapide pour stocker les données de demande et de réponse dans un fichier - Tutoriel SoapUI # 15