how handle exception soapui groovy scripts soapui tutorial 11
In questo tutorial SoapUI, esamineremo la gestione delle eccezioni utilizzando lo script Groovy. La gestione delle eccezioni di runtime in Groovy è simile a Java poiché le librerie Java sono integrate. Tuttavia, discuteremo i concetti di base in SoapUI e approfondiremo la gestione delle eccezioni in Java.
Questo è tutorial # 11 nella serie di tutorial SoapUI . Questo è l'ultimo tutorial per la versione gratuita di SoapUI. Ci sono un paio di altri argomenti rimanenti in questa serie che riguardano le funzionalità di SoapUI pro, i servizi REST e SOAP e i test basati sui dati in SoapUI.
Cominciamo con una breve introduzione a un'eccezione:
Cos'è un'eccezione?
Un eccezione è un errore che si verifica durante l'esecuzione di un programma. Può accadere a causa di molte ragioni come dati non validi, perdita di connessione di rete, tentativo di aprire file non disponibili, accesso a classi non valide, perdita di memoria, ovvero forzare il sistema a lavorare con enormi quantità di dati, server database che non risponde, ecc. Questi errori potrebbe essere a causa di utenti, sviluppatori o risorse hardware.
Internamente, quando viene rilevata un'eccezione durante l'esecuzione, SoapUI proverà a trovare il gestore. Il gestore è il blocco che contiene il codice per catturare l'eccezione.
Le eccezioni sono classificate in due tipi:
- Eccezione di runtime
- Eccezione in fase di compilazione: non applicabile a SoapUI poiché non dispone di un compilatore esplicito
Guarda lo screenshot seguente che ci mostra un'eccezione di runtime per codice non valido. Nello script seguente abbiamo provato a dividere un numero intero per 0. Nella finestra di dialogo di errore si può vedere che l'eccezione viene sollevata dalle librerie java e il messaggio di errore è Divisione per zero .
Possiamo rilevare questa eccezione durante l'esecuzione e gestirla a livello di codice. Prima di ciò, vedremo alcune delle parole chiave importanti utilizzate nei concetti di eccezione java. Alcune delle parole chiave possono essere utilizzate anche nello script groovy. Sono:
- Gettare - Questa parola chiave ci aiuta a lanciare un'eccezione manualmente, cioè a lanciare eccezioni definite dall'utente
- Lancia - Viene utilizzato per richiamare le eccezioni predefinite dalla definizione del metodo. Quindi rileverà l'eccezione se viene rilevato un errore di runtime durante l'esecuzione.
- Provare e Catturare - La parola chiave 'try' viene utilizzata con la parola chiave 'catch'. Se possiamo prevedere la parte del programma in cui può sorgere l'eccezione durante l'esecuzione, possiamo usare il blocco 'try' in quel punto. Alla fine del blocco 'try', il blocco 'catch' dovrebbe iniziare a rilevare un'eccezione. All'interno del blocco catch, dobbiamo scrivere il gestore per gestire l'eccezione.
- Infine - Questo è il blocco predefinito e opzionale nella struttura delle eccezioni. Se abbiamo bisogno di qualsiasi istruzione da eseguire alla fine del programma, come la pulizia di oggetti inutilizzati, la chiusura delle connessioni ecc., Ciò può essere fatto all'interno di questo blocco.
Quella che segue è la struttura generale di un'eccezione:
provare
{
}
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!'); }
Lo script precedente produce il seguente risultato come mostrato nello screenshot.
Come abbiamo discusso in precedenza, abbiamo provato a dividere 'A' 'B' che è zero. Quindi il blocco 'catch' viene eseguito e mostra il messaggio definito dall'utente nel registro. Vedilo nella dichiarazione 'catch' che abbiamo usato Eccezione class che è la superclasse in Java per tutte le eccezioni integrate. Tutte le classi di eccezioni predefinite vengono ereditate da Eccezione classe. Per gestire eccezioni di runtime imprevedibili, possiamo usare Eccezione class nel blocco 'catch'.
Modifichiamo ora lo script precedente per ottenere il risultato richiesto. Vedi lo screenshot seguente:
Proviamo ora questo nel nostro normale test dei servizi web. Nello script seguente, non abbiamo utilizzato il blocco try-catch, quindi avremo l'eccezione di runtime.
// 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!'); }
Lo script sopra genererà un'eccezione chiamata Indice della Matrice Fuori Dai Limiti d'Eccezione perché lo script sta tentando di accedere a un indice dell'array non valido, ad esempio 5, che non è disponibile.
(Clicca sull'immagine per ingrandirla)
Come puoi vedere nello script sopra, abbiamo inizializzato l'array 'countryNames' con la dimensione di cinque. Accetta solo cinque valori di stringa, ad esempio nomi di paesi. All'interno delle istruzioni iterative, abbiamo verificato come idx<= 5 . Quindi il ciclo itererà fino a 6 volte e proverà a cercare 6thelemento nella matrice. Poiché il valore non sarà presente, genera un'eccezione di runtime.
quale non è un esempio di data mining?
Per gestire questo scenario, modifichiamo lo script sopra come di seguito:
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!'); }
Ecco il risultato per lo script precedente.
Questo è il modo in cui possiamo gestire l'eccezione di runtime durante l'esecuzione del nostro programma.
Nota: possiamo usare Indice della Matrice Fuori Dai Limiti d'Eccezione direttamente nel blocco 'catch' invece di utilizzare Eccezione classe. Se mettiamo il nome esatto dell'eccezione nel blocco 'catch', verrà catturato solo quando viene lanciata la particolare eccezione. Se vengono generate altre eccezioni predefinite, il blocco catch fallirà.
Un buon script di automazione dovrebbe avere gestori di eccezioni adeguati. Altrimenti, sarà difficile monitorare ogni momento dell'esecuzione.
Come ho accennato in precedenza, lo script groovy supporta la parola chiave 'throws' per lanciare l'eccezione predefinita al chiamante.
Vedere lo script di esempio seguente per comprendere questo concetto:
(argomenti / parametri) lanci
{
}
Ecco il codice di esempio per lo scheletro sopra.
// 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)); } }
Nello script sopra, il file Indice della Matrice Fuori Dai Limiti d'Eccezione verrà lanciato alla funzione chiamata. Lì dobbiamo gestire correttamente con un blocco try-catch. In caso contrario, verrà lanciata un'eccezione da SoapUI.
Conclusione:
L'implementazione della gestione delle eccezioni nei nostri normali script di test relativi ai servizi Web, ci sarà utile per mantenere il codice e ridurre l'intervento / monitoraggio manuale da parte dei tester. Possiamo utilizzare più blocchi try-catch quando richiesto nello script.
Prossimo tutorial SoapUI n.12: Nel prossimo tutorial, forniremo ulteriori informazioni e funzionalità della versione SoapUI Pro.
Quindi continua a leggere. Commenti, domande, suggerimenti sono i benvenuti, come sempre!
Lettura consigliata
- 4 Caratteristiche importanti di SoapUI Pro per Pro Audience - SoapUI Tutorial # 12
- Come scrivere script Groovy di base in SoapUI - SoapUi Tutorial # 6
- Come utilizzare le proprietà in SoapUI Groovy Script - SoapUI Tutorial # 7
- Una rapida guida SoapUI per memorizzare i dati di richiesta e risposta in un file - Esercitazione SoapUI # 15
- Oltre 15 tutorial SoapUI: il miglior strumento di test delle API dei servizi Web
- Impara i concetti avanzati di scripting SoapUI Groovy - SoapUI Tutorial # 9
- Tutorial approfonditi su Eclipse per principianti
- Come creare un progetto REST in SoapUI Pro: Tutorial # 13