how handle exception soapui groovy scripts soapui tutorial 11
V tomto kurzu SoapUI se podíváme na zpracování výjimek pomocí skriptování Groovy. Zpracování runtime výjimek v groovy je podobné prostředí Java, protože jsou integrovány knihovny Java. Budeme však diskutovat o základních pojmech v SoapUI a půjdeme do hloubky zpracování výjimek v Javě.
Tohle je tutoriál č. 11 v sérii tutoriálů SoapUI . Toto je poslední výukový program pro bezplatnou verzi SoapUI. V této sérii zbývá několik dalších témat, která se týkají funkcí SoapUI pro, služeb REST a SOAP a testování řízeného daty v SoapUI.
Začněme krátkým úvodem k výjimce:
Co je to výjimka?
An výjimka je chyba, ke které dojde během provádění programu. Může k tomu dojít z mnoha důvodů, jako jsou neplatná data, ztráta síťového připojení, pokusy o otevření souborů, které nejsou k dispozici, přístup k neplatné třídě, únik paměti, tj. Nutení systému pracovat s velkým množstvím dat, nereagování databázového serveru atd. Tyto chyby může to být kvůli uživatelům, vývojářům nebo hardwarovým prostředkům.
Interně, když během provádění dojde k výjimce, SoapUI se pokusí najít obslužnou rutinu. Handler je blok, který obsahuje kód, který zachytí výjimku.
Výjimky jsou kategorizovány dvěma typy:
- Výjimka za běhu
- Výjimka kompilace času - neplatí pro SoapUI, protože nemá explicitní kompilátor
Podívejte se na následující snímek obrazovky, který nám ukazuje runtime výjimku pro neplatný kód. V níže uvedeném skriptu jsme se pokusili rozdělit celé číslo na 0. V chybovém dialogu je vidět, že výjimka je vyvolána z java knihoven a chybová zpráva je Dělení nulou .
jak spustit soubory .jar v systému Windows 10
Tuto výjimku můžeme zachytit během provádění a programově ji zpracovat. Před tím uvidíme některá důležitá klíčová slova, která se používají v konceptech výjimek Java. Některá klíčová slova lze použít také v groovy skriptu. Oni jsou:
- Házet - Toto klíčové slovo nám pomáhá házet výjimku ručně, tj. Házet uživatelem definované výjimky
- Vrhá - Používá se k volání předdefinovaných výjimek z definice metody. Zachytí tedy výjimku, pokud se během provádění objeví nějaká runtime chyba.
- Snaž se a Úlovek - klíčové slovo „try“ se používá s klíčovým slovem „catch“. Pokud dokážeme předpovědět část programu, kde může během provádění dojít k výjimce, můžeme na tomto místě použít blok „try“. Na konci bloku „try“ by měl blok „catch“ začít chytat výjimku. Uvnitř bloku catch musíme psát obslužnou rutinu pro zpracování výjimky.
- Konečně - Toto je výchozí a volitelný blok ve struktuře výjimek. Pokud potřebujeme na konci programu provést nějaké příkazy, jako je čištění nepoužívaných objektů, uzavření připojení atd., Které lze provést uvnitř tohoto bloku.
Následuje obecná struktura výjimky:
Snaž se
{
}
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!'); }
Výše uvedený skript vytváří následující výsledek, jak je znázorněno na snímku obrazovky.
Jak jsme diskutovali dříve, pokusili jsme se rozdělit „A“ na „B“, což je nula. Blok „catch“ se tedy provede a v protokolu se zobrazí zpráva definovaná uživatelem. Podívejte se, že v prohlášení „úlovek“ jsme použili Výjimka třída, která je nadtřídou v Javě pro všechny vestavěné výjimky. Všechny předdefinované třídy výjimek jsou zděděny Výjimka třída. Ke zpracování nepředvídatelných výjimek za běhu můžeme použít Výjimka třídy v bloku „úlovek“.
Pojďme nyní upravit výše uvedený skript, abychom získali požadovaný výsledek. Viz následující snímek obrazovky:
Zkusme to nyní v našem pravidelném testování webových služeb. V následujícím skriptu jsme nepoužili blok try-catch, takže získáme runtime výjimku.
// 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!'); }
Výše uvedený skript vyvolá výjimku nazvanou ArrayIndexOutOfBoundsException protože skript se pokouší získat přístup k neplatnému indexu pole, tj. 5, který není k dispozici.
(Klikněte na obrázek pro zvětšení)
Jak vidíte ve výše uvedeném skriptu, inicializovali jsme pole „countryNames“ o velikosti pět. Přijímá pouze pět řetězcových hodnot, tj. Názvy zemí. Uvnitř iterativních příkazů jsme zkontrolovali jako idx<= 5 . Smyčka tedy bude iterovat až 6krát a pokusí se vyhledat 6thprvek v poli. Protože tam hodnota nebude, vyvolá runtime výjimku.
Abychom zvládli tento scénář, upravme výše uvedený skript, jak je uvedeno níže:
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!'); }
Zde je výsledek výše uvedeného skriptu.
Takto můžeme zpracovat runtime výjimku během provádění našeho programu.
Poznámka: můžeme použít ArrayIndexOutOfBoundsException v bloku „úlovek“ přímo namísto použití Výjimka třída. Pokud vložíme přesný název výjimky do bloku „catch“, bude zachycen pouze při vyvolání konkrétní výjimky. Pokud budou vyvolány jakékoli další předdefinované výjimky, blokování chybou se nezdaří.
Dobrý automatizační skript by měl mít správné obslužné rutiny výjimek. Jinak bude obtížné sledovat každý okamžik provedení.
Jak jsem již zmínil dříve, groovy skript podporuje klíčové slovo „throws“, které vyvolá předdefinovanou výjimku volajícímu.
V následujícím ukázkovém skriptu pochopíte tento koncept:
(argumenty / parametry) hodí
{
}
Tady je ukázkový kód výše uvedené 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)); } }
Ve výše uvedeném skriptu je ArrayIndexOutOfBoundsException bude vyvolána volané funkci. Tam musíme správně zacházet s blokem try-catch. V opačném případě bude SoapUI vyvolána výjimka.
Závěr:
Implementace zpracování výjimek do našich pravidelných testovacích skriptů souvisejících s webovými službami nám pomůže udržovat kód a omezit manuální zásahy / monitorování testery. Pokud to skript vyžaduje, můžeme použít několik bloků try-catch.
Další SoapUI tutorial # 12: V dalším kurzu poskytneme více informací a funkcí verze SoapUI Pro.
Čtěte dál. Komentáře, dotazy, návrhy jsou vítány, jako vždy!
Doporučené čtení
- 4 důležité funkce SoapUI Pro pro profesionální publikum - SoapUI Tutorial # 12
- Jak psát základní Groovy skript v SoapUI - SoapUi Tutorial # 6
- Jak používat vlastnosti v SoapUI Groovy Script - SoapUI Tutorial # 7
- Rychlý průvodce SoapUI pro ukládání dat požadavků a odpovědí do souboru - SoapUI Tutorial # 15
- 15+ SoapUI Tutorials: The Best Web Services API Testing Tool
- Naučte se pokročilé koncepty skriptování SoapUI Groovy - SoapUI Tutorial # 9
- Výukové programy pro zatmění do hloubky pro začátečníky
- Jak vytvořit projekt REST v SoapUI Pro: Výukový program č. 13