how handle exception soapui groovy scripts soapui tutorial 11
I denne SoapUI-opplæringen vil vi se på unntakshåndtering ved hjelp av Groovy-skripting. Håndtering av unntak for kjøretid i groovy ligner på Java ettersom Java-bibliotekene er integrert. Imidlertid vil vi diskutere grunnleggende konsepter i SoapUI og gå inn i dybden av unntakshåndtering i Java.
Dette er opplæring # 11 i SoapUI opplæringsserier . Dette er den siste opplæringen for den gratis versjonen av SoapUI. Det er et par flere emner igjen i denne serien som handler om SoapUI pro-funksjoner, REST- og SOAP-tjenester og datadrevet testing i SoapUI.
La oss begynne med en kort introduksjon til et unntak:
Hva er et unntak?
An unntak er en feil som oppstår under utførelsen av et program. Det kan skje på grunn av mange årsaker som ugyldige data, nettverkstilkoblingstap, prøver å åpne filer som ikke er tilgjengelige, får tilgang til ugyldig klasse, minnelekkasje, dvs. å tvinge systemet til å jobbe med enorme mengder data, databaseserveren ikke svarer, etc. Disse feilene kan være på grunn av brukere, utviklere eller maskinvare ressurser.
Internt, når et unntak oppstår under utførelsen, vil SoapUI prøve å finne behandleren. Handler er blokken som inneholder koden for å fange unntaket.
Unntak er kategorisert to typer:
- Runtime unntak
- Unntak for kompileringstid - gjelder ikke SoapUI, da den ikke har en eksplisitt kompilator
Se på følgende skjermbilde som viser oss et unntak for kjøretid for ugyldig kode. I skriptet nedenfor prøvde vi å dele et heltall med 0. I feildialogen kan det sees at unntaket heves fra java-biblioteker og feilmeldingen er Divisjon med null .
Vi kan fange dette unntaket under utførelsen og håndtere det programmatisk. Før det vil vi se noen av de viktige nøkkelordene som brukes i java unntakskonseptene. Noen av nøkkelordene kan også brukes i groovy script. De er:
- Kaste - Dette nøkkelordet hjelper oss å kaste et unntak manuelt, dvs. å kaste brukerdefinerte unntak
- Kaster - Den brukes til å kalle de forhåndsdefinerte unntakene fra metodedefinisjonen. Så det vil fange unntaket hvis det er noen kjøretidsfeil funnet under utførelsen.
- Prøve og Å fange - 'prøve' nøkkelord brukes med 'fange' nøkkelord. Hvis vi kan forutsi den delen av programmet der unntaket kan oppstå under utførelsen, kan vi bruke 'prøve' -blokk der. På slutten av 'prøv' -blokken, bør 'fangst' -blokken begynne å få et unntak. Inne i fangstblokken må vi skrive fører for å håndtere unntaket.
- Endelig - Dette er standard og valgfri blokk i unntaksstrukturen. Hvis vi trenger noen uttalelser som skal utføres på slutten av programmet, som å rense ubrukte gjenstander, lukke forbindelser osv. Som kan gjøres inne i denne blokken.
Følgende er den generelle strukturen til et unntak:
prøve
{
}
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!'); }
Ovenstående skript gir følgende resultat som vist på skjermbildet.
Som vi diskuterte tidligere, prøvde vi å dele 'A' 'B' som er null. Så 'fangst' -blokken blir utført og viser den brukerdefinerte meldingen i loggen. Se at vi i 'fangst' -uttalelsen har brukt Unntak klasse som er superklassen i Java for alle de innebygde unntakene. Alle forhåndsdefinerte unntaksklasser er arvet fra Unntak klasse. For å håndtere uforutsigbare unntak for kjøretid kan vi bruke Unntak klasse i 'fangst' -blokken.
La oss nå endre skriptet ovenfor for å få det nødvendige resultatet. Se følgende skjermbilde:
La oss nå prøve dette i vår vanlige testing av nettjenester. I det følgende skriptet brukte vi ikke prøvefangstblokk, så vi får unntaket for kjøretid.
// 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!'); }
Ovenstående skript vil kaste et unntak som kalles ArrayIndexOutOfBoundsException fordi skriptet prøver å få tilgang til ugyldig matriseindeks, dvs. 5 som ikke er tilgjengelig.
(Klikk på bildet for forstørret visning)
Som du kan se i skriptet ovenfor, har vi initialisert 'countryNames' array med størrelsen på fem. Den godtar bare fem strengverdier, dvs. landnavn. Inne i de iterative uttalelsene har vi sjekket som idx<= 5 . Så løkken vil gjentas opptil 6 ganger, og den vil prøve å søke 6thelement i matrisen. Siden verdien ikke vil være der, kaster det et unntak for kjøretid.
gratis hurtigbokalternativ for småbedrifter
For å håndtere dette scenariet, la oss endre skriptet ovenfor som nedenfor:
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!'); }
Her er resultatet for ovenstående skript.
Slik kan vi håndtere unntak for kjøretid under programutførelsen.
Merk: Vi kan bruke ArrayIndexOutOfBoundsException i 'fangst' -blokken direkte i stedet for å bruke Unntak klasse. Hvis vi legger det eksakte unntaksnavnet i 'fangst' -blokken, vil det bare fange når det spesielle unntaket kastes. Hvis andre forhåndsdefinerte unntak blir kastet, mislykkes fangstblokkeringen.
Et godt automatiseringsskript bør ha riktig unntakshåndtering. Ellers vil det være vanskelig å overvåke hvert øyeblikk av henrettelsen.
Som jeg har nevnt tidligere, støtter groovy script 'kaster' søkeord for å kaste det forhåndsdefinerte unntaket til den som ringer.
Se eksemplet på eksemplet nedenfor for å forstå dette konseptet:
(argumenter / parametere) kaster
{
}
Her er eksempelkoden for skjelettet ovenfor.
// 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)); } }
I ovenstående skript er ArrayIndexOutOfBoundsException vil bli kastet til den kallte funksjonen. Der må vi håndtere riktig med en prøvefangstblokk. Ellers vil et unntak bli kastet av SoapUI.
Konklusjon:
Implementering av unntakshåndtering i våre vanlige webtjenestrelaterte testskripter, vil være nyttig for oss å opprettholde koden og redusere manuell intervensjon / overvåking av testere. Vi kan bruke flere forsøk-blokker når det kreves i skriptet.
Neste SoapUI opplæring # 12: I neste opplæring vil vi gi mer informasjon og funksjoner i SoapUI Pro-versjonen.
Så fortsett å lese. Kommentarer, spørsmål, forslag er velkomne, som alltid!
Anbefalt lesing
- 4 Viktige funksjoner i SoapUI Pro for Pro Audience - SoapUI Tutorial # 12
- Hvordan skrive Basic Groovy Script i SoapUI - SoapUi Tutorial # 6
- Hvordan bruke egenskaper i SoapUI Groovy Script - SoapUI Tutorial # 7
- En rask SoapUI-guide for lagring av forespørsels- og svardata i en fil - SoapUI-veiledning nr. 15
- 15+ SoapUI Tutorials: The Best Web Services API Testing Tool
- Lær avanserte SoapUI Groovy Scripting Concepts - SoapUI Tutorial # 9
- In-Depth Eclipse Tutorials For Beginners
- Hvordan lage REST-prosjekt i SoapUI Pro: Opplæring # 13