how handle exception soapui groovy scripts soapui tutorial 11
W tym samouczku SoapUI przyjrzymy się obsłudze wyjątków za pomocą skryptów Groovy. Obsługa wyjątków środowiska uruchomieniowego w Groovy jest podobna do Java, ponieważ biblioteki Java są zintegrowane. Jednak omówimy podstawowe pojęcia w SoapUI i zagłębimy się w obsługę wyjątków w Javie.
To jest tutorial # 11 z serii samouczków SoapUI . To jest ostatni samouczek dotyczący bezpłatnej wersji SoapUI. W tej serii pozostało jeszcze kilka tematów dotyczących funkcji SoapUI pro, usług REST i SOAP oraz testowania opartego na danych w SoapUI.
Zacznijmy od krótkiego wprowadzenia do wyjątku:
różnica między java i c ++
Co to jest wyjątek?
Na wyjątek to błąd napotkany podczas wykonywania programu. Może się to zdarzyć z wielu powodów, takich jak nieprawidłowe dane, utrata połączenia sieciowego, próba otwarcia niedostępnych plików, uzyskanie dostępu do nieprawidłowej klasy, wyciek pamięci, czyli wymuszenie pracy systemu z dużą ilością danych, brak odpowiedzi serwera bazy danych itp. Błędy te może być spowodowany przez użytkowników, programistów lub zasoby sprzętowe.
Wewnętrznie, gdy podczas wykonywania zostanie napotkany wyjątek, SoapUI spróbuje znaleźć procedurę obsługi. Handler to blok zawierający kod wychwytujący wyjątek.
Wyjątki dzielą się na dwa typy:
- Wyjątek w czasie wykonywania
- Wyjątek czasu kompilacji - nie dotyczy SoapUI, ponieważ nie ma jawnego kompilatora
Spójrz na poniższy zrzut ekranu, który pokazuje nam wyjątek czasu wykonywania dla nieprawidłowego kodu. W poniższym skrypcie próbowaliśmy podzielić liczbę całkowitą przez 0. W oknie dialogowym błędu widać, że wyjątek jest zgłaszany z bibliotek java, a komunikat o błędzie to Dzielenie przez zero .
Możemy przechwycić ten wyjątek podczas wykonywania i obsłużyć go programowo. Wcześniej zobaczymy niektóre z ważnych słów kluczowych, które są używane w koncepcjach wyjątków Java. Niektóre słowa kluczowe mogą być również użyte w groovym skrypcie. Oni są:
- Rzucać - To słowo kluczowe pomaga nam ręcznie zgłosić wyjątek, tj. Zgłosić wyjątki zdefiniowane przez użytkownika
- Rzuty - Służy do wywołania predefiniowanych wyjątków od definicji metody. Więc wychwyci wyjątek, jeśli podczas wykonywania zostanie znaleziony błąd w czasie wykonywania.
- Próbować i Złapać - słowo kluczowe „try” jest używane ze słowem kluczowym „catch”. Jeśli potrafimy przewidzieć część programu, w której może wystąpić wyjątek podczas wykonywania, możemy w tym miejscu użyć bloku „try”. Na końcu bloku „try”, blok „catch” powinien zacząć wychwytywać wyjątek. Wewnątrz bloku catch musimy napisać procedurę obsługi do obsługi wyjątku.
- Wreszcie - To jest domyślny i opcjonalny blok w strukturze wyjątku. Jeśli potrzebujemy wykonać jakieś instrukcje na końcu programu, takie jak czyszczenie nieużywanych obiektów, zamykanie połączeń itp., Można to zrobić wewnątrz tego bloku.
Poniżej przedstawiono ogólną strukturę wyjątku:
próbować
{
}
catch
{
}
finally
{
}
Now let us implement the exception handler in the sample code which we have already seen in the screenshot.
10 najlepszych aplikacji szpiegowskich na iPhone'a
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!'); }
Powyższy skrypt daje następujący wynik, jak pokazano na zrzucie ekranu.
Jak omówiliśmy wcześniej, próbowaliśmy podzielić „A” „B”, czyli zero. Tak więc blok „catch” zostaje wykonany i wyświetla w dzienniku komunikat zdefiniowany przez użytkownika. Zobacz, że w instrukcji „catch” użyliśmy Wyjątek klasa, która jest nadklasą w Javie dla wszystkich wbudowanych wyjątków. Wszystkie predefiniowane klasy wyjątków są dziedziczone z Wyjątek klasa. Aby obsłużyć nieprzewidywalne wyjątki środowiska uruchomieniowego, możemy użyć Wyjątek klasa w bloku „catch”.
Zmodyfikujmy teraz powyższy skrypt, aby uzyskać wymagany wynik. Zobacz poniższy zrzut ekranu:
Spróbujmy teraz tego w naszych regularnych testach usług internetowych. W poniższym skrypcie nie użyliśmy bloku try-catch, więc otrzymamy wyjątek czasu wykonania.
// 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!'); }
Powyższy skrypt zgłosi wyjątek o nazwie ArrayIndexOutOfBoundsException ponieważ skrypt próbuje uzyskać dostęp do nieprawidłowego indeksu tablicy, tj. 5, który nie jest dostępny.
(Kliknij obraz, aby wyświetlić powiększenie)
Jak widać w powyższym skrypcie, zainicjowaliśmy tablicę „countryNames” o rozmiarze pięć. Akceptuje tylko pięć wartości ciągów, tj. Nazwy krajów. W instrukcjach iteracyjnych sprawdziliśmy jako idx<= 5 . Więc pętla będzie iterować do 6 razy i spróbuje przeszukać 6thelement w tablicy. Ponieważ nie będzie tam wartości, zgłasza wyjątek czasu wykonywania.
Aby obsłużyć ten scenariusz, zmodyfikujmy powyższy skrypt jak poniżej:
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!'); }
Oto wynik dla powyższego skryptu.
W ten sposób możemy obsłużyć wyjątek czasu wykonywania podczas wykonywania naszego programu.
Uwaga: możemy użyć ArrayIndexOutOfBoundsException w bloku „catch” bezpośrednio zamiast używania Wyjątek klasa. Jeśli umieścimy dokładną nazwę wyjątku w bloku „catch”, zostanie on przechwycony tylko wtedy, gdy zostanie zgłoszony wyjątek. Jeśli zostaną zgłoszone inne wstępnie zdefiniowane wyjątki, blok catch zakończy się niepowodzeniem.
Dobry skrypt automatyzacji powinien mieć odpowiednie programy obsługi wyjątków. W przeciwnym razie trudno będzie monitorować każdy moment egzekucji.
Jak wspomniałem wcześniej, groovy script obsługuje słowo kluczowe „throws”, aby przesłać wstępnie zdefiniowany wyjątek do dzwoniącego.
Zobacz poniższy przykładowy skrypt, aby zrozumieć tę koncepcję:
(argumenty / parametry) rzuca
{
}
Oto przykładowy kod powyższego szkieletu.
// 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)); } }
W powyższym skrypcie ArrayIndexOutOfBoundsException zostanie wyrzucony do wywoływanej funkcji. Tam musimy odpowiednio obsłużyć blokiem try-catch. W przeciwnym razie SoapUI zgłosi wyjątek.
Wniosek:
Wdrożenie obsługi wyjątków w naszych zwykłych skryptach testowych związanych z usługami sieciowymi będzie dla nas pomocne w utrzymaniu kodu i ograniczeniu ręcznych interwencji / monitorowania przez testerów. Jeśli jest to wymagane w skrypcie, możemy użyć wielu bloków try-catch.
ado net pytania i odpowiedzi do wywiadów dla doświadczonych
Następny samouczek SoapUI nr 12: W następnym samouczku przedstawimy więcej informacji i funkcji wersji SoapUI Pro.
Więc czytaj dalej. Komentarze, pytania, sugestie są mile widziane, jak zawsze!
rekomendowane lektury
- 4 Ważne cechy SoapUI Pro dla Pro Audience - SoapUI Tutorial # 12
- Jak napisać podstawowy skrypt Groovy w SoapUI - SoapUi Tutorial # 6
- Jak korzystać z właściwości w skrypcie SoapUI Groovy - samouczek SoapUI # 7
- Szybki przewodnik SoapUI dotyczący przechowywania danych żądań i odpowiedzi w pliku - SoapUI Tutorial # 15
- Ponad 15 samouczków SoapUI: Najlepsze narzędzie do testowania interfejsu API usług internetowych
- Poznaj zaawansowane koncepcje tworzenia skryptów SoapUI Groovy - samouczek SoapUI nr 9
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Jak stworzyć projekt REST w SoapUI Pro: samouczek nr 13