how handle exception soapui groovy scripts soapui tutorial 11
У овом водичу за СоапУИ, погледаћемо руковање изузецима помоћу Гроови скриптирања. Руковање рунтиме изузецима у гроовиу слично је Јава-у јер су Јава библиотеке интегрисане. Међутим, разговараћемо о основним концептима у СоапУИ и заћи ћемо у дубину руковања изузецима у Јави.
Ово је туториал бр. 11 у серији туторијала за СоапУИ . Ово је последњи водич за бесплатну верзију СоапУИ. У овој серији је остало још неколико тема које се односе на СоапУИ про функције, РЕСТ и СОАП услуге и тестирање на основу података у СоапУИ.
Почнимо са кратким уводом у изузетак:
Шта је изузетак?
Ан изузетак је грешка која се наиђе током извршавања програма. То се може догодити из многих разлога као што су неваљани подаци, губитак мрежне везе, покушај отварања датотека које нису доступне, приступ неваљаној класи, цурење меморије, односно присиљавање система да ради са огромном количином података, нереаговање сервера базе података итд. може бити због корисника, програмера или хардверских ресурса.
Интерно, када се током извршавања наиђе на изузетак, СоапУИ ће покушати да пронађе обрађивача. Руковалац је блок који садржи код за ухватити изузетак.
Изузеци су категорисани у две врсте:
- Изузетак током извођења
- Изузетак за време компајлирања - не односи се на СоапУИ, јер нема експлицитни компајлер
Погледајте следећи снимак екрана који нам приказује изузетак током неважећег кода. У доњој скрипти покушали смо поделити цео број са 0. У дијалогу о грешкама може се видети да је изузетак покренут из Јава библиотека и порука о грешци је Дељење са нулом .
Можемо ухватити овај изузетак током извршења и програмски га руковати. Пре тога, видећемо неке од важних кључних речи које се користе у концептима Јава изузетка. Неке од кључних речи могу се користити и у гроови скрипти. Су:
- Баци - Ова кључна реч нам помаже да ручно бацимо изузетак, тј. Да избацимо изузеће дефинисане од корисника
- Баца - Користи се за позивање унапред дефинисаних изузетака из дефиниције методе. Дакле, ухватиће изузетак ако је током извршења пронађена било каква грешка током извршавања.
- Покушати и Улов - кључна реч „пробај“ користи се са кључном речи „цатцх“. Ако можемо предвидети део програма где изузетак може настати током извршавања, можемо користити блок „три“ на том месту. На крају блока „три“, блок „цатцх“ треба да почне да хвата изузетак. Унутар блока цатцх морамо да напишемо руковатељ да бисмо обрадили изузетак.
- Коначно - Ово је задати и опционални блок у структури изузетака. Ако нам требају било које изјаве које треба извршити на крају програма, попут чишћења некоришћених објеката, затварања веза итд. Што се може урадити унутар овог блока.
Следи општа структура изузетка:
покушати
{
}
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!'); }
Горња скрипта даје следећи резултат као што је приказано на снимку екрана.
Као што смо раније разговарали, покушали смо да поделимо „А“ „Б“ која је нула. Дакле, блок ‘цатцх’ се извршава и у дневнику приказује кориснички дефинисану поруку. Погледајте то у изјави „цатцх“ коју смо користили Изузетак класа која је суперкласа у Јави за све уграђене изузетке. Све унапред дефинисане класе изузетака су наслеђене од Изузетак класа. Можемо користити за руковање непредвидивим изузецима током извођења Изузетак класе у блоку „цатцх“.
Изменимо сада горњу скрипту како бисмо добили тражени резултат. Погледајте следећи снимак екрана:
Покушајмо сада у нашем редовном тестирању веб услуга. У следећој скрипти нисмо користили три-цатцх блок, па ћемо добити изузетак током извођења.
// 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!'); }
Горња скрипта ће избацити изузетак који се зове АрраиИндекОутОфБоундсЕкцептион јер скрипта покушава да приступи неважећем индексу низа тј. 5 који није доступан.
(Кликните на слику за увећани приказ)
Као што видите у горњој скрипти, иницијализовали смо низ „цоунтриНамес“ величине пет. Прихвата само пет вредности низа, тј. Имена држава. Унутар итеративних изјава проверили смо као идк<= 5 . Дакле, петља ће се поновити до 6 пута и покушаће да претражи 6тхелемент у низу. Будући да вредност неће бити тамо, она доноси изузетак током извршавања.
где могу да нађем свој мрежни кључ
Да бисмо се позабавили овим сценаријем, изменимо горњу скрипту као што је приказано у наставку:
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!'); }
Ево резултата за горњу скрипту.
На овај начин можемо да се носимо са изузецима током извођења током извршавања нашег програма.
Белешка: можемо да користимо АрраиИндекОутОфБоундсЕкцептион у блоку „цатцх“ директно уместо да користите Изузетак класа. Ако тачно име изузетка ставимо у блок „цатцх“, оно ће ухватити само када се баци одређени изузетак. Ако се избаце било који други унапред дефинисани изузеци, блок цатцх неће успети.
Добра скрипта за аутоматизацију треба да има одговарајуће руковаоце изузецима. У супротном, биће тешко надгледати сваки тренутак извршења.
Као што сам раније напоменуо, гроови скрипта подржава кључну реч „баца“ да би унапред дефинисани изузетак бацио на позиваоца.
Погледајте доњи пример скрипте да бисте разумели овај концепт:
(аргументи / параметри) баца
{
}
Ево примера кода за горњи скелет.
// 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)); } }
У горњој скрипти, АрраиИндекОутОфБоундсЕкцептион биће бачена на позвану функцију. Тамо морамо правилно поступати са блоком три-цатцх. У супротном, изузетак ће избацити СоапУИ.
Закључак:
Имплементација руковања изузецима у наше редовне скрипте за тестирање повезане са веб услугама биће нам корисно за одржавање кода и смањење ручне интервенције / надзора од стране тестера. Можемо користити више блокова три-цатцх када је то потребно у скрипти.
Следећи водич за СоапУИ # 12: У следећем упутству ћемо пружити више информација и могућности верзије СоапУИ Про.
Па настави читати. Коментари, питања, предлози су добродошли, као и увек!
Препоручено читање
- 4 важне карактеристике СоапУИ Про-а за професионалну публику - Водич за СоапУИ бр. 12
- Како написати основну Гроови скрипту у СоапУИ - Туториал бр. 6 за СоапУи
- Како се користе својства у СоапУИ Гроови Сцрипт - Туториал бр. 7 за СоапУИ
- Кратки водич за СоапУИ за чување података о захтевима и одговорима у датотеци - Водич за СоапУИ бр. 15
- 15+ водича за СоапУИ: Најбољи алат за тестирање АПИ-ја за веб услуге
- Научите напредне концепте скриптирања Гроови за СоапУИ - Водич за бр. 9 за СоапУИ
- Дубински водичи за помрачење за почетнике
- Како створити РЕСТ пројекат у СоапУИ Про: Водич бр. 13