how handle exception soapui groovy scripts soapui tutorial 11
U ovom vodiču za SoapUI razmotrit ćemo rukovanje iznimkama pomoću Groovy skriptiranja. Obrada runtime izuzetaka u groovyu slična je Java-i jer su Java knjižnice integrirane. Međutim, razgovarat ćemo o osnovnim konceptima u SoapUI-u i zaći ćemo u dubinu rukovanja iznimkama u Javi.
Ovo je tutorial # 11 u seriji tutorijala za SoapUI . Ovo je zadnji vodič za besplatnu verziju SoapUI. U ovoj je seriji ostalo još nekoliko tema koje se odnose na značajke SoapUI pro, REST i SOAP usluge i testiranje na temelju podataka u SoapUI.
Počnimo s kratkim uvodom u iznimku:
Što je iznimka?
An iznimka je pogreška koja se naiđe tijekom izvršavanja programa. To se može dogoditi iz mnogih razloga kao što su nevaljani podaci, gubitak mrežne veze, pokušaj otvorenih datoteka koje nisu dostupne, pristup nevaljanoj klasi, curenje memorije, tj. Prisiljavanje sustava na rad s ogromnom količinom podataka, nereagiranje poslužitelja baze podataka itd. Te pogreške može biti zbog korisnika, programera ili hardverskih resursa.
Interno, kada se tijekom izvršavanja naiđe na izuzetak, SoapUI će pokušati pronaći voditelja. Rukovatelj je blok koji sadrži kôd za uhvatiti iznimku.
Iznimke su kategorizirane u dvije vrste:
- Iznimka tijekom izvođenja
- Izuzetak vremena kompajliranja - nije primjenjivo na SoapUI jer nema eksplicitni prevoditelj
Pogledajte sljedeću snimku zaslona koja nam prikazuje izuzeće za vrijeme izvođenja nevažećeg koda. U donjoj skripti pokušali smo podijeliti cijeli broj s 0. U dijalogu pogreške može se vidjeti da je iznimka podignuta iz Java knjižnica, a poruka o pogrešci je Podjela s nulom .
Ovu iznimku možemo uhvatiti tijekom izvršenja i programski je riješiti. Prije toga vidjet ćemo neke važne ključne riječi koje se koriste u konceptima Java iznimke. Neke od ključnih riječi mogu se koristiti i u groovy skripti. Oni su:
- Bacanje - Ova nam ključna riječ pomaže u ručnom izbacivanju izuzetaka, tj. U izbacivanju definiranih izuzetaka
- Baca - Koristi se za pozivanje unaprijed definiranih iznimaka od definicije metode. Dakle, uhvatit će iznimku ako se tijekom izvršenja nađe bilo kakva pogreška u izvođenju.
- Probati i Ulov - ključna riječ 'try' koristi se s ključnom riječi 'catch'. Ako uspijemo predvidjeti dio programa u kojem se tijekom izvršenja može pojaviti iznimka, na tom mjestu možemo upotrijebiti blok 'try'. Na kraju bloka 'try', blok 'catch' trebao bi početi hvatati iznimku. Unutar bloka catch, moramo napisati rukovatelj da bismo obradili iznimku.
- Konačno - Ovo je zadani i neobavezni blok u strukturi izuzetaka. Ako trebamo izvršiti izjave na kraju programa, poput čišćenja neiskorištenih objekata, zatvaranja veza itd. Što se može obaviti unutar ovog bloka.
Slijedi opća struktura iznimke:
probati
{
}
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!'); }
Gornja skripta daje sljedeći rezultat kao što je prikazano na snimci zaslona.
Kao što smo ranije razgovarali, pokušali smo podijeliti 'A' 'B' što je nula. Tako se izvršava blok ‘catch’ i u zapisniku prikazuje korisnički definiranu poruku. Pogledajte u izjavi 'catch' koju smo koristili Iznimka klasa koja je superklasa u Javi za sve ugrađene iznimke. Sve unaprijed definirane klase iznimki nasljeđuju se iz Iznimka razred. Možemo koristiti za rukovanje nepredvidivim izuzecima tijekom izvođenja Iznimka klase u bloku 'catch'.
Izmijenimo sada gornju skriptu kako bismo dobili traženi rezultat. Pogledajte sljedeću snimku zaslona:
Pokušajmo sada u našem redovnom testiranju web usluga. U sljedećoj skripti nismo koristili blok try-catch pa ćemo dobiti izuzetak tijekom izvođenja.
// 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!'); }
Gornja skripta će izbaciti iznimku zvanu ArrayIndexOutOfBoundsException jer skripta pokušava pristupiti nevažećem indeksu niza tj. 5 koji nije dostupan.
(Kliknite sliku za uvećani prikaz)
Kao što možete vidjeti u gornjoj skripti, inicijalizirali smo niz 'countryNames' veličine pet. Prihvaća samo pet vrijednosti niza tj. Imena država. Unutar iterativnih izjava provjerili smo kao idx<= 5 . Dakle, petlja će se ponoviti do 6 puta i pokušat će pretražiti 6thelement u nizu. Budući da vrijednost neće biti, ona izvodi runtime iznimku.
kako biste povećali sigurnost interne mreže vaše tvrtke
Da bismo riješili ovaj scenarij, izmijenimo gornju skriptu kako je prikazano u nastavku:
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!'); }
Evo rezultata za gornju skriptu.
Na ovaj se način možemo nositi s izuzećem tijekom izvođenja tijekom izvođenja programa.
Bilješka: možemo koristiti ArrayIndexOutOfBoundsException u bloku “catch” izravno umjesto da se koristi Iznimka razred. Ako stavimo točno ime iznimke u blok 'catch', ono će uhvatiti samo kada se izuzetak izbaci. Ako se izbace bilo koje druge unaprijed definirane iznimke, blok catch neće uspjeti.
Dobra skripta za automatizaciju trebala bi imati odgovarajuće rukovatelje iznimkama. Inače će biti teško pratiti svaki trenutak izvršenja.
Kao što sam već spomenuo, groovy skripta podržava ključnu riječ 'throws' za bacanje unaprijed definirane iznimke na pozivatelja.
Pogledajte donji primjer skripte kako biste razumjeli ovaj koncept:
[argumenti / parametri] baca
{
}
Evo primjera koda za gornji kostur.
// 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]); } }
U gornjoj skripti, ArrayIndexOutOfBoundsException bit će bačen na pozvanu funkciju. Tamo trebamo pravilno postupati s blokom try-catch. U suprotnom, SoapUI će izuzetak izbaciti.
Zaključak:
Implementacija rukovanja iznimkama u naše redovite skripte za testiranje vezane uz web usluge bit će nam korisna za održavanje koda i smanjenje ručne intervencije / nadzora od strane testera. Kad je to potrebno u skripti, možemo koristiti više blokova try-catch.
Sljedeći vodič za SoapUI # 12: U sljedećem uputstvu pružit ćemo više informacija i značajke verzije SoapUI Pro.
Pa nastavite čitati. Komentari, pitanja, prijedlozi su dobrodošli, kao i uvijek!
Preporučena literatura
- 4 važne značajke SoapUI Pro za profesionalnu publiku - Vodič za SoapUI br. 12
- Kako napisati osnovnu Groovy skriptu u SoapUI - Tutorial br. 6 za SoapUi
- Kako koristiti svojstva u SoapUI Groovy skripti - Vodič za SoapUI br. 7
- Kratki vodič za SoapUI za pohranu podataka o zahtjevima i odgovorima u datoteku - Vodič za SoapUI # 15
- 15+ vodiča za SoapUI: Najbolji alat za testiranje API-ja za web usluge
- Naučite napredne koncepte skriptiranja Groovy za SoapUI - Tutorial br. 9 za SoapUI
- Dubinski vodiči pomračenja za početnike
- Kako stvoriti REST projekt u SoapUI Pro: Vodič br. 13