learn advanced soapui groovy scripting concepts soapui tutorial 9
Els tutorials anteriors de SoapUI han estat una introducció a SoapUI i els seus conceptes de programació. A partir d’ara passarem a conceptes de script Groovy més avançats. Deixem-nos estar amb això Enunciats de flux condicionals - Enunciats booleans i iteratius. Després passarem a la col·lecció de matrius.
Aquest és el novè tutorial del nostre Sèries de tutorials SoapUI .
Les instruccions condicionals s’utilitzen per controlar el flux de l’execució. Aquí hi ha diferents tipus d’enunciats condicionals a Groovy.
Què aprendreu:
- # 1. Afirmacions lògiques o de control:
- # 2. Enunciats bucles o iteratius:
- # 3. Col·lecció Arrays:
- Conclusió
- Lectura recomanada
# 1. Afirmacions lògiques o de control:
Aquestes afirmacions resulten veritables o falses en funció de les condicions lògiques. Són AND, OR i NOT. Els símbols que s’utilitzen són ‘&& (i)’, ‘|’ | i ‘! (Exclamació) ’respectivament. El comportament és el que s’esmenta a la taula de veritat:
Taula de veritat 'I' de l'operador:
Taula de veritat de l'operador 'O':
Operador 'NO' amb finalitats de negació
Declaració condicional: els llenguatges de programació admeten les següents afirmacions condicionals:
- Si ... else statement
- Si ... else if ... else declaració
- Operador ternari
- Instrucció de canvi
A) si ... sinó bloqueja la sintaxi:
si
{
}
Altrament
{
}
En aquesta sintaxi, quan es compleix amb true, s'executarà la sentència donada. Hem d’incloure les afirmacions mitjançant claus si el bloc conté més d’una línia. Això indica que s'ha d'executar tot el bloc en funció de la condició.
Mireu l'exemple de fragment de codi.
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'); }
An si una altra cosa… La declaració ha de contenir només un bloc ELSE.
B) Múltiples blocs condicionals: si ... else si ... else sintaxi
si
{
}
Altrament si
{
}
Altrament
{
}
Si ... si no ... si no afirmació és poc diferent de si una altra cosa… declaració- en termes que té si no bloc. Aquest bloc s’utilitza per afegir diverses condicions. Mireu l’exemple següent.
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'); }
I mireu la captura de pantalla de sortida de l'script anterior: a més, utilitzeu-ho també com a referència per a l'exemple de l'operador boolen:
com executar fitxers jar a Windows 10
C) Operador ternari:
Aquest operador funciona de manera similar a si una altra cosa declaració. Té dos operands com ara el signe d’interrogació (TRUE) i els dos punts per a sentències FALSE / predeterminades.
def A = 100
def B = (A> 100) ? 'PASS': 'FALLA'
log.info (B)
Aquí teniu la captura de pantalla de l'script anterior.
D) Canviar cas: Aquesta afirmació permet diverses branques condicionals amb valors diferents. També admet la comparació de referències d'objectes de classe, expressions regulars, col·leccions com ara matrius, llistes, etc.
Interruptor
{
Caixa :
;
trencar;
Caixa :
;
trencar;
per defecte:
;
}
El Caixa les declaracions comparen els valors amb interruptor valor de cas. Si es tracta d’una coincidència, s’executa el bloc de casos corresponent. Un cop executat el bloc, s'ha d'aturar amb la paraula clau 'break'. Si hem perdut la paraula clau 'break' al final de la sentència de cas, l'execució es traslladarà a la següent sentència de cas, i potser no sigui necessari. En cas que cap dels casos sigui cert, per defecte s'executarà el bloc. Tingueu en compte que Groovy admet tots els principals operadors i paraules clau ja que s’incorpora a les biblioteques java.
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. Enunciats bucles o iteratius:
Aquests permeten la repetició sempre que ho necessitem i són especialment útils per a proves basades en dades.
Per exemple, suposem que tenim uns quants codis postals en un fitxer Excel. Per recuperar tots els codis postals un per un del fitxer Excel i passar-los al servei, és a dir, GetSuppliersZipcode , podem utilitzar afirmacions iteratives. SoapUI també proporciona una característica alternativa anomenada font de dades i passos de prova de bucle de font de dades (disponible només en versions de prova i llicències de SoapUI Pro).
Podem utilitzar aquestes afirmacions iteratives següents a l’escriptura groovy:
- Per a bucle
- Mentre bucle
Per a bucle:
per a (;;)
{
;
}
A la sintaxi anterior, la inicialització indica el punt inicial del bucle i, en funció de la condició, el bucle continuarà o aturarà l'execució.
Consulteu el següent script
per a (int i = 1; i<=10; i++)
{
log.info ('Loop Iterated' + i + 'times');
}
L'escriptura anterior produirà els resultats tal com es mostra a la captura de pantalla següent.
Ara fem servir la declaració de control i la declaració iterativa al nostre món real de proves. Seguiu els passos següents:
- Afegiu Testcase amb el nom desitjat. He creat com a 'T9_GetSupplierByZipCode_TestCase'.
- A continuació, afegiu una propietat anomenada 'Property_Zipcode'
- Afegiu el pas de sol·licitud de prova per al servei 'GetSupplierByZipCode' i poseu el nom de la propietat a la sol·licitud tal com es mostra a la captura de pantalla.
Afegiu el pas de prova de script fantàstic tal com es mostra a la captura de pantalla següent.
A l’editor de guions groovy, escriviu el següent guió.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
El següent resultat es rep al registre i a la pantalla de resposta del servei.
(Feu clic a la imatge per ampliar-la)
Bucle 'mentre':
Sintaxi:
mentre
{
;
}
La lògica anterior també es pot implementar mitjançant el bucle 'while'.
Per tant, l’essència és que la declaració iterativa es pot utilitzar per:
- Executeu els casos de prova o els passos de la prova repetidament
- Controleu el flux de l'execució mitjançant les instruccions de control.
# 3. Col·lecció Arrays:
La col·lecció de matrius ajuda a emmagatzemar diversos valors en una sola variable o objecte. Per defecte, l’índex de matriu comença a zero i hem d’utilitzar aquest índex amb el nom de matriu per accedir al valor corresponent emmagatzemat a la matriu. Sintaxi per declarar matrius en script groovy:
arrayName = objecte nou (5) o,
arrayName = nou objecte (10) () o,
arrayName = nou objecte (10) (10) ()
Nota : Tot declarant matrius hem d'especificar la mida inicial, en cas contrari generarà un error de compilació. A continuació, es mostra l’exemple simple de la matriu unidimensional.
ArrayObj = nou objecte (5);
ArrayObj (0) = 'Testcase1';
ArrayObj (1) = 'Testcase2';
ArrayObj (2) = 'Testcase3';
ArrayObj (3) = 'Testcase4';
ArrayObj (4) = 'Testcase5';
Ara implementem això en els nostres passos de prova habituals. Per tant, afegiu la propietat, la sol·licitud de prova i el pas de prova de script a la suite de proves del projecte, com es mostra a la captura de pantalla següent.
A continuació, feu doble clic al pas de la prova de script i escriviu el següent script.
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.
Per tant, les matrius són molt útils per manejar diversos elements amb diferents tipus. Més pràctica afavorirà una millor comprensió i facilitat d’ús.
Conclusió
Aquesta va ser una introducció general amb exemples de blocs condicionals o lògics que inclouen IF ... ELSE, switch i declaracions ternàries. Aquestes declaracions estan controlades per operadors lògics com AND, OR, NOT. En comparació amb el bloc “commutador”, el bloc “si” és ràpid i senzill. Per gestionar diverses col·leccions com ara matrius per iterar el procés de prova, les declaracions de bucle són fonamentals.
Següent tutorial SoapUI núm. 10 : A la propera entrada aprendrem 'Scripts groovy orientats a objectes a SoapUI'.
En els propers tutorials de SoapUI Groovy Script apareixeran conceptes més útils. Seguiu llegint i compartiu les vostres experiències i consultes als comentaris següents.
Lectura recomanada
- Com gestionar l'excepció en scripts SoapUI Groovy - Tutorial SoapUI núm. 11
- Com escriure script Groovy bàsic a SoapUI - Tutorial SoapUi # 6
- Com s'utilitzen les propietats a SoapUI Groovy Script: tutorial SoapUI núm. 7
- Tutorials Eclipse en profunditat per a principiants
- 4 Funcions importants de SoapUI Pro for Pro Audience: tutorial SoapUI núm. 12
- 15+ Tutorials SoapUI: la millor eina de prova de l'API de serveis web
- Procés d'instal·lació i descàrrega de SoapUI pas a pas: tutorial de SoapUI núm. 3
- Una guia ràpida de SoapUI per emmagatzemar dades de sol·licituds i respostes en un fitxer: tutorial de SoapUI núm. 15