how handle exception soapui groovy scripts soapui tutorial 11
У цьому посібнику SoapUI ми розглянемо обробку винятків за допомогою сценаріїв Groovy. Обробка винятків виконання в groovy схожа на Java, оскільки інтегровані бібліотеки Java. Однак ми обговоримо основні концепції в SoapUI та заглибимось у глибину обробки винятків у Java.
Це є підручник №11 у серії підручників SoapUI . Це останній підручник для безкоштовної версії SoapUI. У цій серії залишилось ще кілька тем, які стосуються функцій SoapUI pro, служб REST та SOAP та тестування на основі даних у SoapUI.
Почнемо з короткого вступу до винятку:
Що таке виняток?
Ан виняток - це помилка, яка виникає під час виконання програми. Це може статися з багатьох причин, таких як недійсні дані, втрата мережевого з'єднання, спроба відкрити недоступні файли, доступ до неприпустимого класу, витік пам'яті, тобто змушення системи працювати з величезною кількістю даних, відсутність відповіді сервера баз даних тощо. може бути через користувачів, розробників або апаратні ресурси.
Внутрішньо, коли під час виконання зустрічається виняток, SoapUI спробує знайти обробник. Обробник - це блок, що містить код для вловлення винятку.
Винятки класифікуються на два типи:
- Виняток виконання
- Виняток часу компіляції - не застосовується до SoapUI, оскільки він не має явного компілятора
Подивіться на наступний знімок екрана, який показує нам виняток виконання під час недійсного коду. У наведеному нижче сценарії ми спробували розділити ціле число на 0. У діалозі про помилку видно, що виняток викликано з бібліотек Java, а повідомлення про помилку Ділення на нуль .
Ми можемо зловити цей виняток під час виконання та обробити його програмно. До цього ми побачимо деякі важливі ключові слова, які використовуються в концепціях винятків Java. Деякі ключові слова також можна використовувати в груві скрипті. Вони є:
- Кинути - Це ключове слово допомагає нам викидати виняток вручну, тобто кидати визначені користувачем винятки
- Кидки - Він використовується для виклику заздалегідь визначених винятків із визначення методу. Отже, це сприймає виняток, якщо під час виконання буде виявлена помилка виконання.
- Спробуйте і Улов - ключове слово “try” використовується з ключовим словом “catch”. Якщо ми можемо передбачити частину програми, де під час виконання може виникнути виняток, ми можемо використати блок “try” у цьому місці. В кінці блоку 'try' блок 'catch' повинен почати ловити виняток. Всередині блоку catch нам потрібно написати обробник для обробки винятку.
- Нарешті - Це стандартний та необов’язковий блок у структурі винятків. Якщо нам потрібні будь-які оператори, які будуть виконані в кінці програми, такі як очищення невикористаних об'єктів, закриття з'єднань тощо, що можна зробити всередині цього блоку.
Нижче наведено загальну структуру винятку:
спробуй
{
}
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!'); }
Наведений вище сценарій дає такий результат, як показано на скріншоті.
Як ми вже обговорювали раніше, ми намагалися розділити 'А' 'В', яке дорівнює нулю. Тож блок «catch» виконується і відображає в журналі повідомлення, яке визначає користувач. Дивіться, що ми використовували в заяві “catch” Виняток клас, який є суперкласом в Java для всіх вбудованих винятків. Усі попередньо визначені класи винятків успадковуються від Виняток клас. Для обробки непередбачуваних винятків під час виконання ми можемо використовувати Виняток клас у блоці “catch”.
Давайте тепер змінимо наведений вище сценарій, щоб отримати необхідний результат. Дивіться наступний знімок екрана:
Давайте зараз спробуємо це на нашому регулярному тестуванні веб-служб. У наступному сценарії ми не використовували блок try-catch, тому отримаємо виняток виконання.
// 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!'); }
Наведений вище сценарій викличе виняток з назвою ArrayIndexOutOfBoundsException оскільки скрипт намагається отримати доступ до недійсного індексу масиву, тобто 5, який недоступний.
(Клацніть на зображення для збільшення)
Як ви можете бачити у наведеному вище сценарії, ми ініціалізували масив “countryNames” розміром п’ять. Він приймає лише п’ять рядкових значень, тобто назв країн. Усередині ітеративних тверджень ми перевірили як idx<= 5 . Отже, цикл буде повторюватися до 6 разів, і він намагатиметься шукати 6гоелемент у масиві. Оскільки значення там не буде, воно видає виняток часу виконання.
як виглядає клавіша wep
Щоб обробити цей сценарій, давайте змінимо наведений вище сценарій, як показано нижче:
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!'); }
Ось результат для вищевказаного сценарію.
Ось як ми можемо обробляти виняток виконання під час виконання нашої програми.
Примітка: ми можемо використовувати ArrayIndexOutOfBoundsException у блоці “catch” безпосередньо замість використання Виняток клас. Якщо ми введемо точну назву винятку в блоці “catch”, воно буде ловити лише тоді, коли буде викинуто певний виняток. Якщо викидаються будь-які інші заздалегідь визначені винятки, блок catch не буде здійснений.
Хороший сценарій автоматизації повинен мати належні обробники винятків. В іншому випадку буде важко відстежувати кожен момент страти.
Як я вже згадував раніше, скрипт groovy підтримує ключове слово 'throws', щоб передати заздалегідь визначений виняток абоненту.
Дивіться наведений нижче зразок сценарію, щоб зрозуміти цю концепцію:
[аргументи / параметри] кидає
{
}
Ось зразок коду для вищезазначеного скелета.
// 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]); } }
У наведеному вище сценарії, ArrayIndexOutOfBoundsException буде перекинуто на викликану функцію. Там нам потрібно правильно поводитися з блоком try-catch. В іншому випадку SoapUI видасть виняток.
Висновок:
Реалізація обробки винятків у наших звичайних сценаріях тестування веб-служб буде корисною для нас, щоб підтримувати код і зменшити ручне втручання / моніторинг тестерами. Ми можемо використовувати декілька блоків try-catch, коли це потрібно в сценарії.
Наступний підручник SoapUI №12: У наступному посібнику ми надамо більше інформації та особливостей версії SoapUI Pro.
Тож продовжуйте читати. Коментарі, запитання, пропозиції вітаються, як завжди!
Рекомендована література
- 4 найважливіші особливості SoapUI Pro для професійної аудиторії - Підручник з SoapUI №12
- Як написати основний скрипт Groovy в SoapUI - Підручник SoapUi No6
- Як використовувати властивості в сценарії Groovy SoapUI - Підручник SoapUI №7
- Короткий посібник SoapUI для зберігання даних запитів та відповідей у файлі - Підручник SoapUI # 15
- 15+ підручників SoapUI: найкращий інструмент тестування API веб-служб
- Дізнайтеся про вдосконалені концепції сценаріїв Groapy для SoapUI - Підручник SoapUI №9
- Поглиблені підручники Eclipse для початківців
- Як створити проект REST у SoapUI Pro: Підручник No13