learn advanced soapui groovy scripting concepts soapui tutorial 9
Τα προηγούμενα μαθήματα SoapUI αποτέλεσαν μια εισαγωγή στο SoapUI και τις έννοιες προγραμματισμού του. Από τώρα και στο εξής θα προχωρήσουμε σε πιο προηγμένες ιδέες σεναρίου Groovy. Ας είμαστε μαζί μας Δηλώσεις ροής υπό όρους - τόσο Boolean όσο και επαναληπτικές δηλώσεις. Τότε θα προχωρήσουμε στη συλλογή συστοιχιών.
Αυτό είναι το 9ο σεμινάριο στο δικό μας Σειρά φροντιστηρίων SoapUI .
Οι δηλώσεις υπό όρους χρησιμοποιούνται για τον έλεγχο της ροής της εκτέλεσης. Ακολουθούν διάφοροι τύποι δηλώσεων υπό όρους στο Groovy.
πώς να ανοίξετε το αρχείο .dat
Τι θα μάθετε:
- # 1. Έλεγχος ή λογικές δηλώσεις:
- # 2. Βρόχοι ή επαναληπτικές δηλώσεις:
- # 3. Συλλογή συστοιχιών:
- συμπέρασμα
- Συνιστώμενη ανάγνωση
# 1. Έλεγχος ή λογικές δηλώσεις:
Αυτές οι δηλώσεις οδηγούν σε αληθές ή ψευδές με βάση τις λογικές συνθήκες. Είναι ΚΑΙ, Ή ΚΑΙ ΟΧΙ. Τα σύμβολα που χρησιμοποιούνται είναι «&& (και)», ‘|’ | και '! (Θαυμαστικό) »αντίστοιχα. Η συμπεριφορά είναι όπως αναφέρεται στον πίνακα αλήθειας:
Πίνακας αλήθειας χειριστή 'Και':
Πίνακας αλήθειας χειριστή 'Ή':
Τελεστής «ΟΧΙ» για λόγους άρνησης
Δήλωση υπό όρους: Οι γλώσσες προγραμματισμού υποστηρίζουν τις ακόλουθες δηλώσεις υπό όρους:
- Εάν… άλλη δήλωση
- Εάν… αλλιώς αν… αλλιώς δήλωση
- Τερματικός χειριστής
- Αλλαγή δήλωσης
A) αν… αλλιώς μπλοκάρετε τη σύνταξη:
αν
{
}
Αλλού
{
}
Σε αυτήν τη σύνταξη, όταν αληθεύει η δεδομένη δήλωση θα εκτελεστεί. Πρέπει να επισυνάψουμε τις δηλώσεις με σγουρά τιράντες εάν το μπλοκ περιέχει περισσότερες από μία γραμμές. Αυτό δίνει εντολή σε ολόκληρο το μπλοκ να εκτελείται με βάση την κατάσταση.
Κοιτάξτε το παράδειγμα αποσπάσματος κώδικα.
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'); }
Ενα αν… αλλιώς… Η δήλωση πρέπει να περιέχει μόνο ένα μπλοκ ELSE.
Β) Πολλαπλά μπλοκ υπό όρους: εάν… αλλιώς εάν… αλλιώς σύνταξη
αν
{
}
Διαφορετικά εάν
{
}
Αλλού
{
}
Αν… αλλιώς αν… αλλιώς η δήλωση είναι λίγο διαφορετική από αν… αλλιώς… δήλωση- με όρους που έχει αλλιώς εάν ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Αυτό το μπλοκ χρησιμοποιείται για την προσθήκη πολλαπλών συνθηκών. Κοιτάξτε το παρακάτω παράδειγμα.
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'); }
Και δείτε το στιγμιότυπο οθόνης εξόδου για το παραπάνω σενάριο: Επίσης, χρησιμοποιήστε αυτό ως αναφορά και για το παράδειγμα του boolen operator:
Γ) Τερματικός χειριστής:
Αυτός ο τελεστής λειτουργεί παρόμοιος με αυτόν αν… αλλιώς δήλωση. Έχει δύο τελεστές όπως το ερωτηματικό (TRUE) και το άνω και κάτω τελεία για FALSE / προεπιλεγμένες δηλώσεις.
def A = 100
def B = (A> 100) ; 'PASS': 'FAIL'
log.info (Β)
Ακολουθεί το στιγμιότυπο οθόνης για το παραπάνω σενάριο.
Δ) Θήκη διακόπτη: Αυτή η δήλωση επιτρέπει πολλούς κλάδους υπό όρους με διαφορετικές τιμές. Επίσης υποστηρίζει σύγκριση αναφορών αντικειμένων κλάσης, κανονικών εκφράσεων, συλλογών όπως πίνακες, λίστες κ.λπ.
Διακόπτης
{
υπόθεση :
;
Διακοπή;
υπόθεση :
;
Διακοπή;
Προκαθορισμένο:
;
}
ο υπόθεση Οι δηλώσεις συγκρίνουν τις τιμές με το διακόπτης αξία περίπτωσης. Εάν είναι ένας αγώνας, τότε εκτελείται το αντίστοιχο μπλοκ πεζών. Μόλις εκτελεστεί το μπλοκ, τότε θα πρέπει να σταματήσει με τη λέξη-κλειδί 'break'. Εάν χάσαμε τη λέξη-κλειδί 'break' στο τέλος της δήλωσης περίπτωσης, η εκτέλεση θα μετακινηθεί στην επόμενη δήλωση περίπτωσης- και αυτό μπορεί να μην είναι απαραίτητο. Σε περίπτωση που καμία από τις περιπτώσεις δεν είναι αληθινή, Προκαθορισμένο το μπλοκ θα εκτελεστεί. Λάβετε υπόψη ότι το Groovy υποστηρίζει όλους τους μεγάλους τελεστές και λέξεις-κλειδιά καθώς ενσωματώνεται στις βιβλιοθήκες 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. Βρόχοι ή επαναληπτικές δηλώσεις:
Αυτά επιτρέπουν την επανάληψη όποτε χρειαζόμαστε και είναι ιδιαίτερα χρήσιμα για δοκιμές βάσει δεδομένων.
Για παράδειγμα, ας υποθέσουμε ότι έχουμε μερικούς ταχυδρομικούς κώδικες σε ένα αρχείο excel. Για να ανακτήσετε όλους τους ταχυδρομικούς κώδικες έναν προς έναν από το αρχείο excel και να τον μεταβιβάσετε στην υπηρεσία, δηλαδή GetSuppliersZipcode , μπορούμε να χρησιμοποιήσουμε επαναλαμβανόμενες δηλώσεις. Το SoapUI παρέχει επίσης μια εναλλακτική δυνατότητα που ονομάζεται βήματα δοκιμής πηγής δεδομένων και βρόχου πηγής δεδομένων. (Διατίθεται μόνο σε δοκιμαστικές εκδόσεις και εκδόσεις με άδεια χρήσης του SoapUI Pro.)
Μπορούμε να χρησιμοποιήσουμε αυτές τις ακόλουθες επαναληπτικές δηλώσεις στο σενάριο groovy:
- Για βρόχο
- Ενώ βρόχος
Για βρόχο:
Για (; ; )
{
;
}
Στην παραπάνω σύνταξη, η αρχικοποίηση δηλώνει το σημείο εκκίνησης του βρόχου και με βάση την κατάσταση βρόχου θα συνεχιστεί ή θα σταματήσει η εκτέλεση.
Δείτε το παρακάτω σενάριο
για (int i = 1; i<=10; i++)
{
log.info («Επανάληψη βρόχου» + i + «φορές»);
}
Το παραπάνω σενάριο θα παράγει τα αποτελέσματα όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Τώρα ας χρησιμοποιήσουμε τη δήλωση ελέγχου και την επαναληπτική δήλωση στον πραγματικό μας κόσμο δοκιμών. Ακολουθήστε τα παρακάτω βήματα:
- Προσθέστε το Testcase με το όνομα που θέλετε. Έχω δημιουργήσει ως 'T9_GetSupplierByZipCode_TestCase'.
- Στη συνέχεια, προσθέστε μια ιδιότητα που ονομάζεται 'Property_Zipcode'
- Προσθέστε το βήμα αιτήματος δοκιμής για την υπηρεσία 'GetSupplierByZipCode' και τοποθετήστε το όνομα της ιδιότητας στο αίτημα όπως φαίνεται στο στιγμιότυπο οθόνης.
Προσθέστε το βήμα δοκιμής σεναρίου groovy όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Στο πρόγραμμα επεξεργασίας σεναρίων groovy, γράψτε το ακόλουθο σενάριο.
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
Το ακόλουθο αποτέλεσμα λαμβάνεται στο αρχείο καταγραφής καθώς και στην οθόνη απόκρισης υπηρεσίας.
(Κάντε κλικ στην εικόνα για μεγέθυνση)
Βρόχος 'while':
Σύνταξη:
ενώ
{
;
}
Η παραπάνω λογική μπορεί να εφαρμοστεί και με τη χρήση του βρόχου «while».
Ως εκ τούτου, η ουσία είναι ότι η επαναληπτική δήλωση μπορεί να χρησιμοποιηθεί για:
- Εκτελέστε επανειλημμένα τις δοκιμαστικές περιπτώσεις ή τα βήματα δοκιμής
- Ελέγξτε τη ροή της εκτέλεσης μέσω των δηλώσεων ελέγχου.
# 3. Συλλογή συστοιχιών:
Η συλλογή συστοιχιών βοηθά στην αποθήκευση πολλαπλών τιμών σε μία μόνο μεταβλητή ή αντικείμενο. Το ευρετήριο συστοιχιών ξεκινά στο μηδέν από προεπιλογή και πρέπει να χρησιμοποιήσουμε αυτό το ευρετήριο με το όνομα πίνακα για να αποκτήσουμε πρόσβαση στην αντίστοιχη τιμή που είναι αποθηκευμένη στον πίνακα. Σύνταξη για να δηλώσετε συστοιχίες σε σενάριο groovy:
arrayName = νέο αντικείμενο (5) ή,
arrayName = νέο αντικείμενο (10) () ή,
arrayName = νέο αντικείμενο (10) (10) ()
Σημείωση : Ενώ δηλώνουμε πίνακες πρέπει να καθορίσουμε το αρχικό μέγεθος, διαφορετικά θα ρίξει ένα σφάλμα μεταγλώττισης. Εδώ είναι το απλό παράδειγμα για τη μονοδιάστατη συστοιχία.
ArrayObj = νέο αντικείμενο (5);
ArrayObj (0) = 'Testcase1';
ArrayObj (1) = 'Testcase2';
ArrayObj (2) = 'Testcase3';
ArrayObj (3) = 'Testcase4';
ArrayObj (4) = 'Testcase5';
Τώρα ας το εφαρμόσουμε στα κανονικά μας βήματα. Προσθέστε λοιπόν ιδιότητα, αίτημα δοκιμής και βήμα δοκιμής σεναρίου κάτω από τη σουίτα δοκιμής έργου όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Και μετά κάντε διπλό κλικ στο βήμα δοκιμής σεναρίου και γράψτε το ακόλουθο σενάριο.
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.
Έτσι, οι πίνακες είναι πολύ χρήσιμες για τον χειρισμό πολλαπλών στοιχείων με διαφορετικούς τύπους. Περισσότερη πρακτική θα προωθήσει την καλύτερη κατανόηση και ευκολία στη χρήση.
συμπέρασμα
Αυτή ήταν μια συνολική εισαγωγή με παραδείγματα σε υπό όρους ή λογικά μπλοκ που περιλαμβάνουν IF… ELSE, διακόπτες και τριμερείς δηλώσεις. Αυτές οι δηλώσεις ελέγχονται από τους λογικούς τελεστές όπως AND, OR, NOT. Σε σύγκριση με το 'διακόπτης' μπλοκ 'if' είναι γρήγορο και απλό. Για να χειριστείτε πολλές συλλογές όπως πίνακες για να επαναλάβετε τη διαδικασία δοκιμής, οι δηλώσεις βρόχου είναι κρίσιμες.
Επόμενο σεμινάριο SoapUI # 10 : Στην επόμενη δημοσίευση θα μάθουμε 'Αντικειμενοστρεφή Groovy Scripting στο SoapUI'.
Πιο χρήσιμες έννοιες έρχονται στα επόμενα σεμινάρια SoapUI Groovy Script. Συνεχίστε να διαβάζετε και μοιραστείτε τις εμπειρίες και τα ερωτήματά σας στα παρακάτω σχόλια.
Συνιστώμενη ανάγνωση
- Πώς να χειριστείτε την εξαίρεση σε δέσμες ενεργειών SoapUI Groovy - SoapUI Tutorial # 11
- Πώς να γράψετε το βασικό σενάριο Groovy στο SoapUI - SoapUi Tutorial # 6
- Τρόπος χρήσης ιδιοτήτων στο σενάριο SoapUI Groovy - SoapUI Tutorial # 7
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- 4 Σημαντικά χαρακτηριστικά του SoapUI Pro για Pro Audience - SoapUI Tutorial # 12
- 15+ Tutorial SoapUI: Το καλύτερο εργαλείο δοκιμών API υπηρεσιών Ιστού
- Βήμα προς βήμα Διαδικασία λήψης και εγκατάστασης SoapUI - Tutorial SoapUI # 3
- Ένας γρήγορος οδηγός SoapUI για την αποθήκευση δεδομένων αιτήσεων και απαντήσεων σε ένα αρχείο - SoapUI Tutorial # 15