learn advanced soapui groovy scripting concepts soapui tutorial 9
Die vorherigen SoapUI-Tutorials waren eine Einführung in SoapUI und seine Programmierkonzepte. Wir werden uns von nun an mit fortgeschritteneren Groovy-Skriptkonzepten befassen. Lasst uns das mit sein Bedingte Flussanweisungen - sowohl boolesche als auch iterative Anweisungen. Dann fahren wir mit der Arraysammlung fort.
Dies ist das 9. Tutorial in unserem SoapUI Tutorial-Serie .
Bedingte Anweisungen werden verwendet, um den Ablauf der Ausführung zu steuern. Hier sind verschiedene Arten von bedingten Anweisungen in Groovy.
Was du lernen wirst:
- # 1. Kontroll- oder logische Anweisungen:
- # 2. Schleifen oder iterative Aussagen:
- #3. Arrays Sammlung:
- Fazit
- Literatur-Empfehlungen
# 1. Kontroll- oder logische Anweisungen:
Diese Aussagen führen basierend auf den logischen Bedingungen zu wahr oder falsch. Sie sind UND, ODER und NICHT. Die verwendeten Symbole sind '&& (und)', '|' | und '! (Ausruf) “. Das Verhalten ist wie in der Wahrheitstabelle erwähnt:
'Und' Operator Wahrheitstabelle:
Wahrheitstabelle des Operators 'ODER':
Operator 'NICHT' für Negationszwecke
Bedingte Anweisung: Programmiersprachen unterstützen die folgenden bedingten Anweisungen:
- Wenn ... sonst Aussage
- Wenn ... sonst wenn ... sonst Aussage
- Ternärer Operator
- Switch-Anweisung
A) wenn… sonst Blocksyntax:
wenn
{
}}
Sonst
{
}}
Wenn in dieser Syntax true erfüllt ist, wird die angegebene Anweisung ausgeführt. Wir müssen die Anweisungen in geschweifte Klammern setzen, wenn der Block mehr als eine Zeile enthält. Dies weist an, dass der gesamte Block basierend auf der Bedingung ausgeführt werden soll.
Schauen Sie sich das Beispielcode-Snippet an.
int a=100 int b=200 if (a>b) { log.info('B is greater than A'); } else { log.info('A is greater or both are equal'); }
Ein ansonsten… Anweisung sollte nur einen ELSE-Block enthalten.
B) Mehrere bedingte Blöcke: if… else if… else-Syntax
wenn
{
}}
Sonst wenn
{
}}
Sonst
{
}}
Wenn ... sonst wenn ... sonst Aussage ist wenig anders als ansonsten… Aussage - in Bezug darauf, dass es hat sonst wenn Block. Dieser Block wird zum Hinzufügen mehrerer Bedingungen verwendet. Schauen Sie sich das folgende Beispiel an.
int a=100 int b=200 int c=300 if (a>b && a>c) { log.info('A is greater than B and C'); } else if (b>a && b>c) { log.info('B is greater than A and C'); } else { log.info('C is greater than A and B or All are equal numbers'); }
Schauen Sie sich den Ausgabe-Screenshot für das obige Skript an: Verwenden Sie diesen auch als Referenz für das Beispiel des Boolen-Operators:
C) Ternärer Operator:
Dieser Operator funktioniert ähnlich wie ansonsten Erklärung. Es hat zwei Operanden wie Fragezeichen (TRUE) und Doppelpunkt für FALSE / Standardanweisungen.
def A = 100
def B = (A> 100) ? 'PASS': 'FAIL'
log.info (B)
Hier ist der Screenshot für das obige Skript.
D) Schaltergehäuse: Diese Anweisung ermöglicht mehrere bedingte Verzweigungen mit unterschiedlichen Werten. Außerdem wird der Vergleich von Klassenobjektreferenzen, regulären Ausdrücken, Sammlungen wie Arrays, Listen usw. unterstützt.
Schalter
{
Fall :
;;
brechen;
Fall :
;;
brechen;
Standard:
;;
}}
Das Fall Anweisungen vergleichen die Werte mit den Schalter Fallwert. Wenn es sich um eine Übereinstimmung handelt, wird der entsprechende Fallblock ausgeführt. Sobald der Block ausgeführt wurde, sollte er durch das Schlüsselwort 'break' gestoppt werden. Wenn das Schlüsselwort 'break' am Ende der case-Anweisung übersehen wurde, wird die Ausführung in die nächste case-Anweisung verschoben. Dies ist möglicherweise nicht erforderlich. Falls keiner der Fälle zutrifft, Standard Block wird ausgeführt. Bitte beachten Sie, dass Groovy alle wichtigen Operatoren und Schlüsselwörter unterstützt, da es in den Java-Bibliotheken enthalten ist.
def country='India' switch(country) { case 'Japan': log.info('Country matched with 1st case statement'); break; case 'Australia': log.info('Country matched with 2st case statement'); break; case 'India': log.info('Country matched with 3st case statement'); break; default: log.info('None of the matches available :('); }
Here’s the output screenshot for the above script.
# 2. Schleifen oder iterative Aussagen:
Diese ermöglichen Wiederholungen bei Bedarf und sind besonders nützlich für datengesteuerte Tests.
Nehmen wir zum Beispiel an, wir haben einige Postleitzahlen in einer Excel-Datei. Um alle Postleitzahlen einzeln aus der Excel-Datei abzurufen und an den Dienst zu übergeben, d.h. GetSuppliersZipcode können wir iterative Anweisungen verwenden. SoapUI bietet auch eine alternative Funktion, die als Testschritte für Datenquellen und Datenquellenschleifen bezeichnet wird. (Nur in Testversionen und lizenzierten Versionen von SoapUI Pro verfügbar.)
VPN für streaming kostenlos
Wir können diese folgenden iterativen Anweisungen im groovigen Skript verwenden:
- Für Schleife
- While-Schleife
For-Schleife:
zum (; ; )
{
;;
}}
In der obigen Syntax bezeichnet die Initialisierung den Startpunkt der Schleife und setzt basierend auf der Bedingungsschleife die Ausführung fort oder stoppt sie.
Siehe das folgende Skript
für (int i = 1; i<=10; i++)
{
log.info ('Loop Iterated' + i + 'times');
}}
Das obige Skript erzeugt die Ergebnisse wie im folgenden Screenshot gezeigt.
Lassen Sie uns nun die Steueranweisung und die iterative Anweisung in unserer realen Testwelt verwenden. Befolgen Sie die folgenden Schritte:
- Fügen Sie Testcase mit Ihrem gewünschten Namen hinzu. Ich habe als 'T9_GetSupplierByZipCode_TestCase' erstellt.
- Fügen Sie dann eine Eigenschaft mit dem Namen 'Property_Zipcode' hinzu.
- Fügen Sie den Testanforderungsschritt für den Dienst 'GetSupplierByZipCode' hinzu und fügen Sie den Eigenschaftsnamen in die Anforderung ein, wie im Screenshot gezeigt.
Fügen Sie einen groovigen Skripttestschritt hinzu, wie im folgenden Screenshot gezeigt.
Schreiben Sie im groovigen Skripteditor das folgende Skript.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
Das folgende Ergebnis wird sowohl im Protokoll als auch im Service-Antwortbildschirm empfangen.
(Klicken Sie auf das Bild für eine vergrößerte Ansicht)
'while-Schleife:
Syntax:
während
{
;;
}}
Die obige Logik kann auch unter Verwendung der 'while' -Schleife implementiert werden.
Das Wesentliche ist daher, dass iterative Aussagen verwendet werden können, um:
- Führen Sie die Testfälle oder Testschritte wiederholt aus
- Steuern Sie den Ablauf der Ausführung über die Steueranweisungen.
#3. Arrays Sammlung:
Mithilfe der Array-Sammlung können mehrere Werte in einer einzelnen Variablen oder einem Objekt gespeichert werden. Der Array-Index beginnt standardmäßig bei Null, und wir müssen diesen Index mit dem Array-Namen verwenden, um auf den entsprechenden im Array gespeicherten Wert zuzugreifen. Syntax zum Deklarieren von Arrays in groovigem Skript:
arrayName = neues Objekt (5) oder,
arrayName = neues Objekt (10) () oder,
arrayName = neues Objekt (10) (10) ()
Hinweis : Beim Deklarieren von Arrays müssen wir die Anfangsgröße angeben, da sonst ein Kompilierungsfehler ausgelöst wird. Hier ist das einfache Beispiel für das eindimensionale Array.
ArrayObj = neues Objekt (5);
ArrayObj (0) = 'Testfall1';
ArrayObj (1) = 'Testfall2';
ArrayObj (2) = 'Testcase3';
ArrayObj (3) = 'Testcase4';
ArrayObj (4) = 'Testcase5';
Lassen Sie uns dies nun in unseren regulären Testschritten implementieren. Fügen Sie daher unter der Projekttestsuite Eigenschaften, Testanforderungen und Skripttestschritte hinzu, wie im folgenden Screenshot gezeigt.
Doppelklicken Sie dann auf den Skripttestschritt und schreiben Sie das folgende Skript.
def MAX_LIMIT = 5 def zipCodes = new Object(MAX_LIMIT) zipCodes(0) = '92704' zipCodes(1) = '99362' zipCodes(2) = '31401' zipCodes(3) = '90247' zipCodes(4) = '87102' int i=0; while (i<5) { if (i<5) { testRunner.testCase.testSteps('Properties'). setPropertyValue('Property_Zipcode',zipCodes(i)); def testStep = testRunner.testCase.testSteps('GetSupplierByZipCode'); testStep.run(testRunner,context); log.info('Loop executed ' + i + ' times'); } i++; } log.info('Testcase execution is completed....');
In this script, we initialized array object as 5 and assigned five zip codes in each array location respectively. Next part of the script is iterative block. Here we iterate the loop up to 5 times. Each time array value will be assigned to the property and then move to GetSupplierByZipCode web service to pass this array value in the request. After that, service step will be executed with the zip code. Finally we will get the following message in the log as shown in the screenshot.
Arrays sind daher sehr nützlich, um mehrere Elemente mit unterschiedlichen Typen zu verarbeiten. Mehr Übung fördert ein besseres Verständnis und eine einfachere Bedienung.
Fazit
Dies war eine allgemeine Einführung mit Beispielen für bedingte oder logische Blöcke, die IF… ELSE-, switch- und ternäre Anweisungen enthalten. Diese Anweisungen werden von logischen Operatoren wie AND, OR, NOT gesteuert. Im Vergleich zum 'Schalter' -Block ist der 'Wenn' -Block schnell und einfach. Um mehrere Sammlungen wie Arrays zu verarbeiten und den Testprozess zu wiederholen, sind Schleifenanweisungen von entscheidender Bedeutung.
Nächstes SoapUI-Tutorial Nr. 10 : Im nächsten Beitrag lernen wir 'Objektorientiertes Groovy Scripting in SoapUI'.
Weitere nützliche Konzepte finden Sie in den nächsten SoapUI Groovy Script-Tutorials. Lesen Sie weiter und teilen Sie Ihre Erfahrungen und Fragen in den Kommentaren unten.
Literatur-Empfehlungen
- So behandeln Sie Ausnahmen in SoapUI Groovy-Skripten - SoapUI Tutorial # 11
- So schreiben Sie ein einfaches Groovy-Skript in SoapUI - SoapUi Tutorial # 6
- Verwendung von Eigenschaften in SoapUI Groovy Script - SoapUI Tutorial # 7
- Ausführliche Eclipse-Tutorials für Anfänger
- 4 Wichtige Funktionen von SoapUI Pro für Pro Audience - SoapUI Tutorial # 12
- 15+ SoapUI-Tutorials: Das beste API-Testtool für Webdienste
- Schritt für Schritt SoapUI Download- und Installationsprozess - SoapUI Tutorial # 3
- Eine kurze SoapUI-Anleitung zum Speichern von Anforderungs- und Antwortdaten in einer Datei - SoapUI Tutorial Nr. 15