how handle exception soapui groovy scripts soapui tutorial 11
Dans ce didacticiel SoapUI, nous examinerons la gestion des exceptions à l'aide de scripts Groovy. La gestion des exceptions d'exécution dans groovy est similaire à Java car les bibliothèques Java sont intégrées. Cependant, nous aborderons les concepts de base de SoapUI et approfondirons la gestion des exceptions en Java.
C'est tutoriel n ° 11 de la série de tutoriels SoapUI . Ceci est le dernier tutoriel de la version gratuite de SoapUI. Il reste quelques autres sujets dans cette série qui concernent les fonctionnalités de SoapUI pro, les services REST et SOAP et les tests pilotés par les données dans SoapUI.
Commençons par une brève introduction à une exception:
Qu'est-ce qu'une exception?
Une exception est une erreur rencontrée lors de l'exécution d'un programme. Cela peut se produire pour de nombreuses raisons telles que des données invalides, une perte de connexion réseau, la tentative d'ouverture de fichiers indisponibles, l'accès à une classe invalide, une fuite de mémoire, c'est-à-dire forcer le système à travailler avec une énorme quantité de données, le serveur de base de données ne répondant pas, etc. Ces erreurs peut être dû aux utilisateurs, aux développeurs ou aux ressources matérielles.
En interne, lorsqu'une exception est rencontrée pendant l'exécution, SoapUI essaiera de trouver le gestionnaire. Handler est le bloc qui contient le code pour intercepter l'exception.
Les exceptions sont classées en deux types:
- Exception d'exécution
- Exception au moment de la compilation - non applicable à SoapUI car il n'a pas de compilateur explicite
Regardez la capture d'écran suivante qui nous montre une exception d'exécution pour un code non valide. Dans le script ci-dessous, nous avons essayé de diviser un entier par 0. Dans la boîte de dialogue d'erreur, on peut voir que l'exception est levée à partir des bibliothèques java et le message d'erreur est Division par zéro .
Nous pouvons intercepter cette exception lors de l'exécution et la gérer par programme. Avant cela, nous verrons certains des mots-clés importants utilisés dans les concepts d'exception Java. Certains des mots-clés peuvent également être utilisés dans le script groovy. Elles sont:
- Lancer - Ce mot clé nous aide à lancer une exception manuellement, c'est-à-dire à lancer des exceptions définies par l'utilisateur
- Jette - Il est utilisé pour appeler les exceptions prédéfinies à partir de la définition de méthode. Ainsi, il interceptera l'exception s'il y a une erreur d'exécution trouvée pendant l'exécution.
- Essayer et Capture - Le mot-clé 'try' est utilisé avec le mot-clé 'catch'. Si nous pouvons prédire la partie du programme où l'exception peut survenir lors de l'exécution, nous pouvons utiliser le bloc «try» à cet endroit. À la fin du bloc «try», le bloc «catch» devrait commencer à attraper une exception. Dans le bloc catch, nous devons écrire le gestionnaire pour gérer l'exception.
- Pour terminer - Il s'agit du bloc par défaut et facultatif dans la structure d'exception. Si nous avons besoin d'exécuter des instructions à la fin du programme, comme le nettoyage des objets inutilisés, la fermeture des connexions, etc., cela peut être fait à l'intérieur de ce bloc.
Voici la structure générale d'une exception:
essayer
{
}
catch
{
}
finally
{
}
Now let us implement the exception handler in the sample code which we have already seen in the screenshot.
Add new test suite under the GlobalWeather project. Then add a test case and groovy script test step under the test step. In the script editor, enter the following script.
// initializing the variables int a = 10; int b = 0; // try, catch block try { // Dividing a number by zero int c = a/b; log.info('Result :' + c); } catch(Exception expObj) { // Exception Handler log.info('You are trying to divide ' + a + ' by ' + b + '. This is not possible actually!'); }
Le script ci-dessus produit le résultat suivant, comme indiqué dans la capture d'écran.
Comme nous l'avons vu précédemment, nous avons essayé de diviser «A» «B» qui vaut zéro. Ainsi, le bloc ‘catch’ est exécuté et affiche le message défini par l’utilisateur dans le journal. Voyez que dans l'instruction «catch», nous avons utilisé Exception class qui est la superclasse en Java pour toutes les exceptions intégrées. Toutes les classes d'exceptions prédéfinies sont héritées de Exception classer. Pour gérer les exceptions d'exécution imprévisibles, nous pouvons utiliser Exception classe dans le bloc «catch».
Modifions maintenant le script ci-dessus pour obtenir le résultat souhaité. Voir la capture d'écran suivante:
Essayons maintenant ceci dans nos tests de services Web réguliers. Dans le script suivant, nous n'avons pas utilisé le bloc try-catch donc nous obtiendrons l'exception d'exécution.
// Initializing array with 5 elements String() countryNames = new String(5); // Assigning values to the array countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; // Iterate the array elements and assign value to the global property for(int idx=0; idx<=5; idx++) { com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( 'CountryName', countryNames(idx)); def testStep = testRunner.testCase.testSteps('GetCitiesByCountry'); testStep.run(testRunner,context); log.info('Executed at ' + idx + ' times!'); }
Le script ci-dessus lèvera une exception appelée ArrayIndexOutOfBoundsException car le script essaie d'accéder à un index de tableau invalide, c'est-à-dire 5 qui n'est pas disponible.
(Cliquez sur l'image pour une vue agrandie)
Comme vous pouvez le voir dans le script ci-dessus, nous avons initialisé le tableau «countryNames» avec la taille de cinq. Il n'accepte que cinq valeurs de chaîne, à savoir les noms de pays. Dans les instructions itératives, nous avons vérifié comme idx<= 5 . Ainsi, la boucle sera itérée jusqu'à 6 fois et elle essaiera de rechercher 6eélément du tableau. Puisque la valeur ne sera pas là, il lève une exception d'exécution.
fausse adresse e-mail que je peux utiliser
Pour gérer ce scénario, modifions le script ci-dessus comme ci-dessous:
String() countryNames = new String(5); // Try block try { countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; for(int idx=0; idx<=5; idx++) { com.eviware.soapui.SoapUI.globalProperties.setPropertyValue ( 'CountryName', countryNames(idx)); def testStep = testRunner.testCase.testSteps('GetCitiesByCountry'); testStep.run(testRunner,context); log.info('Executed at ' + idx + ' times!'); } } catch(Exception exp) // Catch the exception and displaying the message in the log { log.info('You are trying to access invalid array index. Please check and try again!'); }
Voici le résultat du script ci-dessus.
C'est ainsi que nous pouvons gérer les exceptions d'exécution lors de l'exécution de notre programme.
Noter: on peut utiliser ArrayIndexOutOfBoundsException dans le bloc 'catch' directement au lieu d'utiliser Exception classer. Si nous mettons le nom exact de l'exception dans le bloc «catch» », il n'attrapera que lorsque l'exception particulière sera lancée. Si d'autres exceptions prédéfinies sont levées, le bloc catch échoue.
Un bon script d'automatisation doit avoir des gestionnaires d'exceptions appropriés. Sinon, il sera difficile de surveiller chaque instant de l'exécution.
Comme je l'ai mentionné précédemment, le script groovy prend en charge le mot-clé «throws» pour lancer l'exception prédéfinie à l'appelant.
Consultez l'exemple de script ci-dessous pour comprendre ce concept:
(arguments / paramètres) jette
{
}
Voici l'exemple de code pour le squelette ci-dessus.
// Invoke Method MethodWithThrowKeyword(); void MethodWithThrowKeyword() throws ArrayIndexOutOfBoundsException { String() countryNames = new String(5); countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; for(int idx=0; idx<=5; idx++) { log.info('Country Names: ' + countryNames(idx)); } }
Dans le script ci-dessus, le ArrayIndexOutOfBoundsException sera jeté à la fonction appelée. Là, nous devons gérer correctement avec un bloc try-catch. Sinon, une exception sera levée par SoapUI.
Conclusion:
La mise en œuvre de la gestion des exceptions dans nos scripts de test liés aux services Web réguliers nous sera utile pour maintenir le code et réduire les interventions manuelles / la surveillance par les testeurs. Nous pouvons utiliser plusieurs blocs try-catch si nécessaire dans le script.
Prochain tutoriel SoapUI # 12: Dans le prochain tutoriel, nous fournirons plus d'informations et de fonctionnalités de la version SoapUI Pro.
Alors continuez à lire. Les commentaires, questions, suggestions sont les bienvenus, comme toujours!
lecture recommandée
- 4 Fonctionnalités importantes de SoapUI Pro for Pro Audience - Tutoriel SoapUI # 12
- 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
- Un guide SoapUI rapide pour stocker les données de demande et de réponse dans un fichier - Tutoriel SoapUI # 15
- 15+ Tutoriels SoapUI: Le meilleur outil de test d'API de services Web
- Apprenez les concepts avancés de scripts SoapUI Groovy - Tutoriel SoapUI # 9
- Tutoriels Eclipse détaillés pour les débutants
- Comment créer un projet REST dans SoapUI Pro: Tutoriel # 13