how handle exception soapui groovy scripts soapui tutorial 11
In diesem SoapUI-Tutorial werden wir uns mit der Ausnahmebehandlung mithilfe von Groovy-Skripten befassen. Die Behandlung von Laufzeitausnahmen in Groovy ähnelt Java, da die Java-Bibliotheken integriert sind. Wir werden jedoch grundlegende Konzepte in SoapUI diskutieren und auf die Tiefe der Ausnahmebehandlung in Java eingehen.
Das ist Tutorial Nr. 11 in der SoapUI-Tutorialserie . Dies ist das letzte Tutorial für die kostenlose Version von SoapUI. In dieser Reihe sind noch einige weitere Themen enthalten, die sich mit SoapUI Pro-Funktionen, REST- und SOAP-Diensten sowie datengesteuerten Tests in SoapUI befassen.
Beginnen wir mit einer kurzen Einführung in eine Ausnahme:
Was ist eine Ausnahme?
Ein Ausnahme ist ein Fehler, der während der Ausführung eines Programms auftritt. Dies kann auf viele Gründe zurückzuführen sein, z. B. auf ungültige Daten, Verlust der Netzwerkverbindung, Versuch, nicht verfügbare Dateien zu öffnen, Zugriff auf ungültige Klassen, Speicherverlust, dh das System muss mit einer großen Datenmenge arbeiten, der Datenbankserver reagiert nicht usw. Diese Fehler Möglicherweise aufgrund von Benutzern, Entwicklern oder Hardwareressourcen.
Wenn während der Ausführung eine Ausnahme auftritt, versucht SoapUI intern, den Handler zu finden. Handler ist der Block, der den Code zum Abfangen der Ausnahme enthält.
Ausnahmen werden in zwei Typen eingeteilt:
- Laufzeitausnahme
- Ausnahme für die Kompilierungszeit - gilt nicht für SoapUI, da es keinen expliziten Compiler gibt
Schauen Sie sich den folgenden Screenshot an, der uns eine Laufzeitausnahme für ungültigen Code zeigt. Im folgenden Skript haben wir versucht, eine Ganzzahl durch 0 zu teilen. Im Fehlerdialog ist zu sehen, dass die Ausnahme von Java-Bibliotheken ausgelöst wird und die Fehlermeldung lautet Durch Null teilen .
Wir können diese Ausnahme während der Ausführung abfangen und programmgesteuert behandeln. Vorher werden wir einige der wichtigen Schlüsselwörter sehen, die in den Java-Ausnahmekonzepten verwendet werden. Einige der Schlüsselwörter können auch im groovigen Skript verwendet werden. Sie sind:
- Werfen - Dieses Schlüsselwort hilft uns, eine Ausnahme manuell auszulösen, d. H. Benutzerdefinierte Ausnahmen auszulösen
- Würfe - Es wird verwendet, um die vordefinierten Ausnahmen von der Methodendefinition aufzurufen. Es wird also die Ausnahme abfangen, wenn während der Ausführung ein Laufzeitfehler gefunden wird.
- Versuchen und Fang - Das Schlüsselwort 'try' wird mit dem Schlüsselwort 'catch' verwendet. Wenn wir den Teil des Programms vorhersagen können, in dem die Ausnahme während der Ausführung auftreten kann, können wir an dieser Stelle den Block 'try' verwenden. Am Ende des 'try' -Blocks sollte der 'catch' -Block beginnen, eine Ausnahme abzufangen. Innerhalb des catch-Blocks müssen wir den Handler schreiben, um die Ausnahme zu behandeln.
- Schließlich - Dies ist der Standardblock und der optionale Block in der Ausnahmestruktur. Wenn am Ende des Programms Anweisungen ausgeführt werden müssen, z. B. das Reinigen nicht verwendeter Objekte, das Schließen von Verbindungen usw., die in diesem Block ausgeführt werden können.
Das Folgende ist die allgemeine Struktur einer Ausnahme:
Versuchen
{
}
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!'); }
Das obige Skript erzeugt das folgende Ergebnis, wie im Screenshot gezeigt.
Wie wir zuvor besprochen haben, haben wir versucht, 'A' 'B' zu teilen, was Null ist. Der 'catch'-Block wird also ausgeführt und zeigt die benutzerdefinierte Nachricht im Protokoll an. Sehen Sie, dass wir in der 'catch' -Anweisung verwendet haben Ausnahme Klasse, die in Java die Oberklasse für alle integrierten Ausnahmen ist. Alle vordefinierten Ausnahmeklassen werden von geerbt Ausnahme Klasse. Um unvorhersehbare Laufzeitausnahmen zu behandeln, können wir verwenden Ausnahme Klasse im Block 'catch'.
Lassen Sie uns nun das obige Skript ändern, um das gewünschte Ergebnis zu erhalten. Siehe folgenden Screenshot:
Lassen Sie uns dies jetzt in unseren regelmäßigen Webdiensttests versuchen. Im folgenden Skript haben wir den Try-Catch-Block nicht verwendet, sodass die Laufzeitausnahme angezeigt wird.
// 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!'); }
Das obige Skript löst eine Ausnahme namens aus ArrayIndexOutOfBoundsException weil das Skript versucht, auf einen ungültigen Array-Index zuzugreifen, d. h. 5, der nicht verfügbar ist.
(Klicken Sie auf das Bild für eine vergrößerte Ansicht)
Wie Sie im obigen Skript sehen können, haben wir das Array 'countryNames' mit der Größe fünf initialisiert. Es werden nur fünf Zeichenfolgenwerte akzeptiert, d. H. Ländernamen. Innerhalb der iterativen Anweisungen haben wir als überprüft idx<= 5 . Die Schleife wird also bis zu 6 Mal iteriert und versucht, 6 zu suchenthElement im Array. Da der Wert nicht vorhanden ist, wird eine Laufzeitausnahme ausgelöst.
Dienstprogramm zur Überwachung der CPU-Temperatur und der Lüftergeschwindigkeit
Um dieses Szenario zu behandeln, ändern wir das obige Skript wie folgt:
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!'); }
Hier ist das Ergebnis für das obige Skript.
So können wir Laufzeitausnahmen während unserer Programmausführung behandeln.
Hinweis: wir können benutzen ArrayIndexOutOfBoundsException im 'catch' -Block direkt anstatt zu verwenden Ausnahme Klasse. Wenn wir den genauen Ausnahmenamen in den 'catch' -Block einfügen, wird er nur abgefangen, wenn die bestimmte Ausnahme ausgelöst wird. Wenn andere vordefinierte Ausnahmen ausgelöst werden, schlägt der catch-Block fehl.
Ein gutes Automatisierungsskript sollte über geeignete Ausnahmebehandlungsroutinen verfügen. Andernfalls ist es schwierig, jeden Moment der Ausführung zu überwachen.
Wie bereits erwähnt, unterstützt das groovige Skript das Schlüsselwort 'throw', um die vordefinierte Ausnahme an den Aufrufer zu senden.
Sehen Sie sich das folgende Beispielskript an, um dieses Konzept zu verstehen:
(Argumente / Parameter) wirft
{
}}
Hier ist der Beispielcode für das obige Skelett.
// 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)); } }
Im obigen Skript ist die ArrayIndexOutOfBoundsException wird auf die aufgerufene Funktion geworfen. Dort müssen wir mit einem Try-Catch-Block richtig umgehen. Andernfalls wird von SoapUI eine Ausnahme ausgelöst.
Fazit:
Die Implementierung der Ausnahmebehandlung in unseren regulären Testskripten für Webservices ist hilfreich, um den Code zu pflegen und manuelle Eingriffe / Überwachung durch Tester zu reduzieren. Wir können mehrere Try-Catch-Blöcke verwenden, wenn dies im Skript erforderlich ist.
Nächstes SoapUI-Tutorial Nr. 12: Im nächsten Tutorial werden wir weitere Informationen und Funktionen der SoapUI Pro-Version bereitstellen.
Also lies weiter. Kommentare, Fragen, Vorschläge sind wie immer willkommen!
Literatur-Empfehlungen
- 4 Wichtige Funktionen von SoapUI Pro für Pro Audience - SoapUI Tutorial # 12
- So schreiben Sie ein einfaches Groovy-Skript in SoapUI - SoapUi Tutorial # 6
- Verwendung von Eigenschaften in SoapUI Groovy Script - SoapUI Tutorial # 7
- Eine kurze SoapUI-Anleitung zum Speichern von Anforderungs- und Antwortdaten in einer Datei - SoapUI Tutorial Nr. 15
- 15+ SoapUI-Tutorials: Das beste API-Testtool für Webdienste
- Erfahren Sie mehr über SoapUI Groovy Scripting-Konzepte - SoapUI Tutorial # 9
- Ausführliche Eclipse-Tutorials für Anfänger
- So erstellen Sie ein REST-Projekt in SoapUI Pro: Lernprogramm Nr. 13