learn advanced soapui groovy scripting concepts soapui tutorial 9
I precedenti tutorial di SoapUI sono stati un'introduzione a SoapUI e ai suoi concetti di programmazione. D'ora in poi passeremo a concetti di scripting Groovy più avanzati. Cerchiamo di essere questo con Dichiarazioni di flusso condizionali - sia istruzioni booleane che iterative. Quindi passeremo alla raccolta di array.
Questo è il nono tutorial nel nostro Serie di tutorial SoapUI .
Le istruzioni condizionali vengono utilizzate per controllare il flusso dell'esecuzione. Ecco diversi tipi di istruzioni condizionali in Groovy.
Cosa imparerai:
VPN per Reddit
- # 1. Dichiarazioni logiche o di controllo:
- # 2. Dichiarazioni ripetitive o iterative:
- # 3. Raccolta di array:
- Conclusione
- Lettura consigliata
# 1. Dichiarazioni logiche o di controllo:
Queste affermazioni risultano vere o false in base alle condizioni logiche. Sono AND, OR e NOT. I simboli utilizzati sono '&& (e)', '|' | e '! (Esclamazione) 'rispettivamente. Il comportamento è come indicato nella tabella della verità:
Tabella della verità dell'operatore 'And':
Tabella della verità dell'operatore 'OR':
Operatore 'NOT' a scopo di negazione
Dichiarazione condizionale: i linguaggi di programmazione supportano le seguenti istruzioni condizionali:
- If ... else dichiarazione
- If ... else if ... else dichiarazione
- Operatore ternario
- Istruzione Switch
A) if ... else blocca la sintassi:
Se
{
}
Altro
{
}
In questa sintassi, quando è vero, l'istruzione data verrà eseguita. Dobbiamo racchiudere le istruzioni tra parentesi graffe se il blocco contiene più di una riga. Questo indica che l'intero blocco deve essere eseguito in base alla condizione.
Guarda lo snippet di codice di esempio.
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'); }
Un se altro… l'istruzione dovrebbe contenere un solo blocco ELSE.
B) Blocchi condizionali multipli: if ... else if ... else sintassi
Se
{
}
Altrimenti se
{
}
Altro
{
}
Se ... altrimenti se ... altrimenti dichiarazione è leggermente diversa da se altro… dichiarazione- in termini che ha altrimenti se bloccare. Questo blocco viene utilizzato per aggiungere più condizioni. Guarda il seguente esempio.
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'); }
E guarda lo screenshot di output per lo script sopra: Inoltre, usa questo come riferimento anche per l'esempio dell'operatore boolen:
C) Operatore ternario:
Questo operatore funziona in modo simile a se altro dichiarazione. Ha due operandi come il punto interrogativo (TRUE) e i due punti per le istruzioni FALSE / default.
come generare numeri casuali in c ++ tra 0 e 100
def A = 100
def B = (A> 100) ? 'PASS': 'FAIL'
log.info (B)
Ecco lo screenshot per lo script sopra.
D) Interruttore caso: Questa istruzione consente più rami condizionali con valori diversi. Inoltre supporta il confronto di riferimenti a oggetti di classe, espressioni regolari, raccolte come array, elenchi ecc.
Interruttore
{
Astuccio :
;
rompere;
Astuccio :
;
rompere;
predefinito:
;
}
Il Astuccio le istruzioni confrontano i valori con interruttore valore del caso. Se è una corrispondenza, viene eseguito il blocco del caso corrispondente. Una volta che il blocco è stato eseguito, dovrebbe essere fermato dalla parola chiave 'break'. Se abbiamo perso la parola chiave 'break' alla fine dell'istruzione case, l'esecuzione verrà spostata all'istruzione case successiva e ciò potrebbe non essere necessario. Nel caso in cui nessuno dei casi sia vero, predefinito blocco verrà eseguito. Si noti che Groovy supporta tutti i principali operatori e parole chiave poiché è incorporato con le librerie 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. Dichiarazioni ripetitive o iterative:
Questi consentono la ripetizione ogni volta che ne abbiamo bisogno e sono particolarmente utili per i test basati sui dati.
Ad esempio, supponiamo di avere alcuni codici postali in un file excel. Per recuperare tutti i codici postali uno per uno dal file excel e passarlo al servizio, ad es. GetSuppliersZipcode , possiamo usare istruzioni iterative. SoapUI fornisce anche una funzione alternativa denominata fasi di test del loop dell'origine dati e dell'origine dati (disponibile solo nelle versioni di prova e con licenza di SoapUI Pro).
Possiamo usare queste seguenti istruzioni iterative nello script groovy:
- Per loop
- While loop
Per loop:
per (;;)
{
;
}
Nella sintassi precedente, l'inizializzazione denota il punto di inizio del ciclo e in base alla condizione il ciclo continuerà o interromperà l'esecuzione.
Vedere lo script seguente
for (int i = 1; i<=10; i++)
{
log.info ('Loop ripetuto' + i + 'volte');
}
Lo script sopra produrrà i risultati come mostrato nello screenshot seguente.
Ora usiamo l'istruzione di controllo e l'istruzione iterativa nel nostro mondo di test reale. Segui i passaggi seguenti:
- Aggiungi Testcase con il nome desiderato. Ho creato come 'T9_GetSupplierByZipCode_TestCase'.
- Quindi aggiungi una proprietà denominata 'Property_Zipcode'
- Aggiungi il passaggio della richiesta di prova per il servizio 'GetSupplierByZipCode' e inserisci il nome della proprietà nella richiesta come mostrato nello screenshot.
Aggiungi groovy script test step come mostrato nello screenshot seguente.
Nell'editor di script groovy, scrivi il seguente script.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
Il seguente risultato viene ricevuto nel registro e nella schermata di risposta del servizio.
(Clicca sull'immagine per ingrandirla)
Ciclo 'while':
Sintassi:
mentre
{
;
}
La logica di cui sopra può essere implementata anche utilizzando il ciclo 'while'.
Quindi, il succo è che l'istruzione iterativa può essere utilizzata per:
- Eseguire ripetutamente i test case o le fasi di test
- Controlla il flusso dell'esecuzione tramite le istruzioni di controllo.
# 3. Raccolta di array:
La raccolta di array consente di memorizzare più valori in una singola variabile o oggetto. L'indice dell'array inizia da zero per impostazione predefinita e dobbiamo utilizzare quell'indice con il nome dell'array per accedere al valore corrispondente memorizzato nell'array. Sintassi per dichiarare gli array in script groovy:
programma di albero di ricerca binario in java
arrayName = nuovo oggetto (5) o,
arrayName = nuovo oggetto (10) () o,
arrayName = nuovo oggetto (10) (10) ()
Nota : Durante la dichiarazione degli array dobbiamo specificare la dimensione iniziale altrimenti genererà un errore di compilazione. Ecco il semplice esempio per la matrice unidimensionale.
ArrayObj = nuovo oggetto (5);
ArrayObj (0) = 'Testcase1';
ArrayObj (1) = 'Testcase2';
ArrayObj (2) = 'Testcase3';
ArrayObj (3) = 'Testcase4';
ArrayObj (4) = 'Testcase5';
Ora implementiamolo nei nostri passaggi di test regolari. Quindi aggiungi proprietà, richiesta di test e istruzione di test dello script nella suite di test del progetto come mostrato nello screenshot seguente.
Quindi fare doppio clic sull'istruzione di test dello script e scrivere il seguente 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.
Quindi gli array sono molto utili per gestire più elementi con tipi diversi. Una maggiore pratica favorirà una migliore comprensione e facilità d'uso.
Conclusione
Questa è stata un'introduzione generale con esempi di blocchi condizionali o logici che includono IF… ELSE, switch e istruzioni ternarie. Queste istruzioni sono controllate dagli operatori logici come AND, OR, NOT. Rispetto al blocco 'switch', il blocco 'if' è veloce e semplice. Per gestire più raccolte come array per iterare il processo di test, le istruzioni loop sono fondamentali.
Avanti SoapUI tutorial n. 10 : Nel prossimo post impareremo 'Scripting Groovy orientato agli oggetti in SoapUI'.
Concetti più utili arriveranno nei prossimi tutorial di SoapUI Groovy Script. Continua a leggere e condividi le tue esperienze e domande nei commenti qui sotto.
Lettura consigliata
- Come gestire le eccezioni negli script Groovy SoapUI - Tutorial SoapUI # 11
- Come scrivere script Groovy di base in SoapUI - SoapUi Tutorial # 6
- Come utilizzare le proprietà in SoapUI Groovy Script - SoapUI Tutorial # 7
- Tutorial approfonditi su Eclipse per principianti
- 4 Caratteristiche importanti di SoapUI Pro per Pro Audience - SoapUI Tutorial # 12
- Oltre 15 tutorial SoapUI: il miglior strumento di test delle API dei servizi Web
- Processo di download e installazione di SoapUI passo dopo passo - Tutorial SoapUI # 3
- Una rapida guida SoapUI per memorizzare i dati di richiesta e risposta in un file - Esercitazione SoapUI # 15