how handle exception soapui groovy scripts soapui tutorial 11
V tomto výučbe SoapUI sa pozrieme na spracovanie výnimiek pomocou skriptovania Groovy. Spracovanie runtime výnimiek v groovy je podobné ako v Java, pretože sú integrované knižnice Java. Budeme však diskutovať o základných konceptoch v SoapUI a pôjdeme do hĺbky spracovania výnimiek v Jave.
Toto je tutoriál # 11 v sérii tutoriálov SoapUI . Toto je posledný tutoriál pre bezplatnú verziu SoapUI. V tejto sérii zostáva ešte niekoľko ďalších tém, ktoré sa týkajú funkcií SoapUI pro, služieb REST a SOAP a testovania na základe údajov v SoapUI.
Začnime krátkym úvodom k výnimke:
predvolená brána nie je k dispozícii v systéme Windows 10
Aká je výnimka?
An výnimkou je chyba, ktorá sa vyskytne počas vykonávania programu. Môže sa to stať z mnohých dôvodov, ako sú napríklad neplatné údaje, strata sieťového pripojenia, pokusy o otvorenie súborov, ktoré nie sú k dispozícii, prístup k neplatnej triede, únik pamäte, tj nútenie systému pracovať s veľkým množstvom údajov, nereagovanie databázového servera atď. Tieto chyby môže to byť kvôli používateľom, vývojárom alebo hardvérovým prostriedkom.
Interne, keď sa počas vykonávania vyskytne výnimka, SoapUI sa pokúsi nájsť obslužnú rutinu. Handler je blok, ktorý obsahuje kód na zachytenie výnimky.
Výnimky sú rozdelené do dvoch typov:
- Výnimka za behu
- Výnimka z času kompilácie - neuplatňuje sa na SoapUI, pretože nemá explicitný kompilátor
Pozrite sa na nasledujúcu snímku obrazovky, ktorá nám ukazuje výnimku za behu neplatného kódu. V nasledujúcom skripte sme sa pokúsili vydeliť celé číslo číslom 0. V chybovom dialógu vidno, že výnimka je vyvolaná z knižníc Java a chybové hlásenie je Delenie nulou .
Túto výnimku môžeme zachytiť počas vykonávania a programovo ju vyriešiť. Predtým si pozrieme niektoré dôležité kľúčové slová, ktoré sa používajú v konceptoch výnimiek java. Niektoré kľúčové slová je možné použiť aj v groovy skripte. Oni sú:
- Hoď - Toto kľúčové slovo nám pomáha hádzať výnimky ručne, tzn. Hádzať používateľom definované výnimky
- Vrhá - Používa sa na volanie preddefinovaných výnimiek z definície metódy. Výnimku teda zachytí, ak sa počas vykonávania vyskytne nejaká runtime chyba.
- Vyskúšajte a Chytiť - kľúčové slovo „vyskúšať“ sa používa s kľúčovým slovom „chytiť“. Ak dokážeme predpovedať časť programu, kde môže počas vykonávania dôjsť k výnimke, môžeme na tomto mieste použiť blok „try“. Na konci bloku „vyskúšať“ by mal blok „chytiť“ začať zachytávať výnimku. Vo vnútri bloku catch musíme napísať obslužnú rutinu, aby zvládla výnimku.
- Nakoniec - Toto je predvolený a voliteľný blok v štruktúre výnimiek. Ak potrebujeme, aby sa na konci programu vykonali nejaké príkazy, ako je čistenie nepoužitých objektov, ukončenie spojení atď., Ktoré je možné vykonať v tomto bloku.
Toto je všeobecná štruktúra výnimky:
skús
{
}
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!'); }
Vyššie uvedený skript vytvára nasledujúci výsledok, ako je znázornené na snímke obrazovky.
Ako sme už diskutovali, pokúsili sme sa rozdeliť „A“ na „B“, čo je nula. Blok „catch“ sa teda vykoná a v protokole zobrazí správu definovanú používateľom. Vidíme, že vo vyhlásení „úlovok“ sme použili Výnimka trieda, ktorá je nadtriedou v Jave pre všetky zabudované výnimky. Všetky preddefinované triedy výnimiek sa dedia z Výnimka trieda. Na spracovanie nepredvídateľných runtime výnimiek môžeme použiť Výnimka triedy v bloku „úlovok“.
Poďme teraz upraviť vyššie uvedený skript, aby sme dosiahli požadovaný výsledok. Pozri nasledujúci screenshot:
Vyskúšajme to teraz v našom pravidelnom testovaní webových služieb. V nasledujúcom skripte sme nepoužili blok try-catch, takže dostaneme runtime výnimku.
// 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!'); }
Vyššie uvedený skript vyvolá výnimku s názvom ArrayIndexOutOfBoundsException pretože skript sa pokúša získať prístup k neplatnému indexu poľa, t. j. 5, ktorý nie je k dispozícii.
(Kliknite na obrázok pre zväčšenie)
ako zobraziť súbory .swf
Ako vidíte vo vyššie uvedenom skripte, inicializovali sme pole „countryNames“ s veľkosťou päť. Prijíma iba päť hodnôt reťazca, t. J. Názvy krajín. Vo vnútri iteratívnych príkazov sme skontrolovali ako idx<= 5 . Smyčka teda bude iterovať až 6-krát a pokúsi sa vyhľadať 6thprvok v poli. Pretože tam hodnota nebude, vyvolá runtime výnimku.
Aby sme tento scenár zvládli, upravme vyššie uvedený skript, ako je uvedené nižšie:
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!'); }
Tu je výsledok vyššie uvedeného skriptu.
Takto môžeme spracovať výnimku za behu počas vykonávania nášho programu.
Poznámka: môžeme použiť ArrayIndexOutOfBoundsException v bloku „úlovok“ priamo namiesto použitia Výnimka trieda. Ak dáme presný názov výnimky do bloku „catch“, bude sa chytiť, až keď bude vyvolaná konkrétna výnimka. Ak dôjde k hodeniu akýchkoľvek ďalších preddefinovaných výnimiek, blokovanie chybou zlyhá.
Dobrý automatizačný skript by mal mať správne obslužné rutiny výnimiek. V opačnom prípade bude ťažké sledovať každý okamih vykonania.
Ako som už spomínal, groovy skript podporuje kľúčové slovo „vrhá“, aby volajúcemu hodil preddefinovanú výnimku.
Ak chcete porozumieť tomuto konceptu, pozrite si ukážkový skript nižšie:
(argumenty / parametre) hodí
{
}
Tu je ukážkový kód vyššie uvedenej kostry.
// 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)); } }
Vo vyššie uvedenom skripte je ArrayIndexOutOfBoundsException bude hodená na volanú funkciu. Tam musíme správne zaobchádzať s blokom try-catch. V opačnom prípade SoapUI vyvolá výnimku.
Záver:
Implementácia spracovania výnimiek do našich bežných testovacích skriptov súvisiacich s webovými službami nám pomôže udržiavať kód a obmedziť manuálny zásah / monitorovanie testermi. Ak to vyžaduje skript, môžeme použiť viac blokov try-catch.
Ďalší SoapUI tutorial # 12: V nasledujúcom tutoriáli poskytneme viac informácií a funkcií verzie SoapUI Pro.
Čítajte teda ďalej. Komentáre, otázky, návrhy sú vítané, ako vždy!
Odporúčané čítanie
- 4 dôležité vlastnosti SoapUI Pro pre Pro Audience - SoapUI Tutorial # 12
- Ako písať základný Groovy skript v SoapUI - SoapUi Tutorial # 6
- Ako používať vlastnosti v SoapUI Groovy Script - SoapUI Tutorial # 7
- Stručný sprievodca SoapUI pre ukladanie údajov o požiadavkách a odpovediach do súboru - SoapUI Tutorial # 15
- 15+ návodov na SoapUI: najlepší nástroj na testovanie API webových služieb
- Naučte sa pokročilé koncepty skriptovania pre SoapUI - výučba SoapUI č. 9
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Ako vytvoriť projekt REST v aplikácii SoapUI Pro: Výukový program č. 13