Ομάδες σε TestNG
⚡ Έξυπνη Σύνοψη
Ομάδες σε TestNG σας επιτρέπει να επισημάνετε μεθόδους δοκιμών με λογικές ετικέτες και στη συνέχεια να τις συμπεριλάβετε ή να τις εξαιρέσετε μέσω μιας σουίτας XML. Αυτή η προσέγγιση απλοποιεί τις εκτελέσεις καπνού, παλινδρόμησης και εξαρτήσεων χωρίς επανεγγραφή. Java κώδικας.

TestNG είναι ένα πλαίσιο δοκιμών που καλύπτει δοκιμές μονάδας, λειτουργικότητας, από άκρο σε άκρο, UI και ολοκλήρωσης για Java έργα.
Μπορείτε να εκτελέσετε ένα μόνο πακέτο ή πολλά πακέτα (ένα πακέτο ενθυλακώνει σχετικές κλάσεις σε μια καθορισμένη διάταξη καταλόγου) δημιουργώντας μια σουίτα XML και ενεργοποιώντας την μέσω του Maven.
TestNG Ομάδες με Παράδειγμα
Χρησιμοποιείτε ομάδες σε TestNG όταν:
- Δεν θέλετε να διασκορπίσετε τις μεθόδους δοκιμών σε πολλές κλάσεις αποκλειστικά ανά λειτουργική περιοχή, και
- Θέλετε να παραλείψετε (να μην εκτελέσετε) επιλεγμένες δοκιμαστικές περιπτώσεις σαν να απουσίαζαν από τη βάση κώδικα.
- Για να επιτύχετε και τους δύο στόχους, επισημάνετε τις μεθόδους σε λογικές ομάδες. TestNG στη συνέχεια, τιμά τα φίλτρα «συμπερίληψη» και «εξαίρεση» που δηλώνονται στη σουίτα XML.
Το παρακάτω απόσπασμα δείχνει τη σύνταξη ομαδοποίησης ετικετών που χρησιμοποιείται σε μια μέθοδο δοκιμής.
Εδώ χρησιμοποιούνται δύο ονόματα ομάδων, δηλαδή bonding και strong_tiesΑυτές είναι λογικές ετικέτες που μπορείτε να μετονομάσετε ώστε να ταιριάζουν στο έργο σας.
The <groups> Η ετικέτα σηματοδοτεί την έναρξη των φίλτρων ομάδας μέσα στη σουίτα XML.
Στη συνέχεια, προσαρμόζετε το XML για να επιλέξετε μια επιλεγμένη ομάδα από τις κλάσεις με ετικέτες. Το παρακάτω παράδειγμα δείχνει τη σύνταξη δήλωσης ομάδας.
<τρέξιμο>
<περιλαμβάνουν όνομα=«δεσμός» />
</τρέξιμο>
</ομάδες>
Ας υποθέσουμε ότι μια κλάση περιέχει 10 μεθόδους δοκιμών.
Από αυτές τις μεθόδους:
- 6 μέθοδοι φέρουν το
bondingομάδα, και - 4 μέθοδοι φέρουν το
strong_tiesομάδα.
Στη συνέχεια, ρυθμίζετε το Maven και Java διαδρομές και χρησιμοποιήστε το Eclipse IDE για την επίδειξη χρήσης ομάδας μέσω αρχείων XML μέσα σε ένα Javaέργο Maven με βάση το -.
Δημιουργία XML για TestNG με Ετικέτες
- Το αρχείο XML (Extensible Markup Language) στο πλαίσιο Maven αποθηκεύει τη διαμόρφωση για μία ή περισσότερες δοκιμές, που δηλώνονται μέσα στο tags.
- Κάθε καταχώρηση δοκιμής είναι τυλιγμένη σε ένα ετικέτα και μπορεί να περιέχει ένα ή περισσότερα TestNG τάξεις.
- A Java τάξη με έναν ή περισσότερους @Δοκιμή οι σχολιασμοί στις μεθόδους του αντιμετωπίζονται ως TestNG τάξη.
Πολλαπλές ετικέτες εμφανίζονται διαδοχικά για τη δημιουργία ενός λειτουργικού αρχείου testng.xml, δηλαδή , , και .
- The η ετικέτα περιέχει το όνομα επιπέδου σουίτας που χρησιμοποιείται στο TestNG εκθέσεις για συνοπτικές περιλήψεις εκτέλεσης.
- The <test name=”Guru 99 Επίδειξη Δοκιμής Καπνού”> Η ετικέτα περιέχει ένα λογικό όνομα δοκιμής. Η αναφορά το χρησιμοποιεί για τον αριθμό επιτυχιών, αποτυχιών και παραλείψεων, καθώς και για τον συνολικό χρόνο εκτέλεσης και τα μεταδεδομένα ομάδας.
- The η ετικέτα δείχνει στην κλάση δοκιμής, όπου
com.group.guru99είναι το πακέτο καιTC_Class1είναι το όνομα της κλάσης.
<!DOCTYPE σουίτα ΣΥΣΤΗΜΑ «http://testng.org/testng-1.0.dtd»>
<σουίτα όνομα="Σουίτα">
<δοκιμή όνομα="Guru 99 Επίδειξη Δοκιμής Καπνού>
<ομάδες>
<τρέξιμο>
<περιλαμβάνουν όνομα=«ισχυροί δεσμοί» />
</τρέξιμο>
</ομάδες>
<τάξεις>
<τάξη όνομα=«com.group.guru99.TC_Class1» />
</τάξεις>
</δοκιμή>
</σουίτα>
Αυτή η διαμόρφωση XML αναφέρεται στις βίντεο με οδηγίες στις επόμενες ενότητες.
"εξαίρεση" ή "συμπερίληψη" στη δοκιμή XML
Εάν ο μηχανισμός ομαδοποίησης φαίνεται βαρύς για ένα μικρό φίλτρο, η σουίτα testng.xml σάς επιτρέπει επίσης να εξαιρείτε ή να συμπεριλαμβάνετε μεμονωμένες μεθόδους δοκιμής ονομαστικά.
Συμπερίληψη ετικέτας: Σύνταξη για την ετικέτα συμπερίληψηςπεριλαμβάνουν όνομα=“${ΟΝΟΜΑ_ΠΕΡΙΠΤΩΣΗΣ_ΔΟΚΙΜΗΣ}” />
Σημείωση: Μπορείτε να συμπεριλάβετε ή να εξαιρέσετε πολλές περιπτώσεις δοκιμών σε μία μόνο εκτέλεση και η ίδια σύνταξη ισχύει και για τα φίλτρα ομάδας.
Χρήση του dependsOnGroups για Διατεταγμένη Εκτέλεση
Πέρα από την απλή συμπερίληψη, TestNG επιτρέπει σε μια ομάδα να εξαρτάται από μια άλλη χρησιμοποιώντας το dependsOnGroups χαρακτηριστικό. Ο εκτελέστης διασφαλίζει ότι κάθε μέθοδος στην γονική ομάδα ολοκληρώνεται πριν ξεκινήσει οποιαδήποτε εξαρτώμενη μέθοδος, γεγονός που διατηρεί τις προϋποθέσεις αξιόπιστες.
- Πρώτα σύνδεση και μετά συναλλαγές: Ετικέτες μεθόδων σύνδεσης με
group = "auth"και δοκιμές μεταφοράς ετικετών μεdependsOnGroups = {"auth"}Οι δοκιμές μεταφοράς εκτελούνται μόνο αφού ολοκληρωθεί με επιτυχία η σύνδεση. - Παράλειψη σε περίπτωση αποτυχίας: Εάν μια μέθοδος στην γονική ομάδα αποτύχει, TestNG επισημαίνει τις εξαρτώμενες μεθόδους ως παραλειφθείσες αντί να τις αποτυγχάνει εντελώς, γεγονός που διατηρεί τις αναφορές ειλικρινείς.
- Συνδυασμός με alwaysRun: Οι μέθοδοι καθαρισμού θα πρέπει να οριστούν
alwaysRun = trueέτσι η κατάργηση εξακολουθεί να εκτελείται ακόμα και όταν μια ομάδα ανάντη αποτύχει.
Αυτό το μοτίβο είναι συνηθισμένο για σουίτες από άκρο σε άκρο όπου η ρύθμιση του API πρέπει να ολοκληρωθεί πριν ξεκινήσουν οι διεκδικήσεις του UI.
τρέξιμο TestNG Ομαδοποίηση, συμπερίληψη, εξαίρεση κώδικα (βίντεο επίδειξης)
Παρακάτω είναι μια περιήγηση στο Java κώδικα και τη σουίτα XML που καθοδηγούν το ομαδοποίηση, εξαίρεση και συμπερίληψη συμπεριφορά.
Σενάριο δοκιμής: Εκκίνηση του Guru99 demo τραπεζικό ιστότοπο, επαληθεύστε μερικά στοιχεία στη σελίδα σύνδεσης, εισαγάγετε διαπιστευτήρια και επαληθεύστε ξανά μερικά στοιχεία στον πίνακα ελέγχου μετά τη σύνδεση.
Σημείωση: Κάθε βήμα έχει τη δική του μέθοδο, αλλά κατά τον χρόνο εκτέλεσης η σειρά εξαρτάται από τις καταχωρήσεις στη σουίτα XML.
- Μέθοδος 1: Αρχικοποιήστε το πρόγραμμα περιήγησης και εκκινήστε το URL (
tc01LaunchURL()). - Μέθοδος 2: Επαληθεύστε την επικεφαλίδα της σελίδας σύνδεσης (
tc02VerifyLaunchPage()). - Μέθοδος 3: Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης στη φόρμα σύνδεσης (
tc03EnterCredentials()). - Μέθοδος 4: Επαληθεύστε την παρουσία του Αναγνωριστικού Διευθυντή στον πίνακα ελέγχου χρήστη (
tc04VerifyLoggedInPage()). - Μέθοδος 5: Επαληθεύστε πρόσθετους συνδέσμους στον πίνακα ελέγχου χρήστη (
tc05VerifyHyperlinks()).
Code για το σενάριο:
εισαγωγή java.util.concurrent.TimeUnit;
εισαγωγή org.openqa.selenium.Από;
εισαγωγή org.openqa.selenium.WebDriver;
εισαγωγή org.openqa.selenium.firefox.FirefoxΠρογράμματα οδήγησης;
εισαγωγή org.testng.Assert;
εισαγωγή org.testng.annotations.Test;
δημόσια τάξη TC_Class1 {
δημόσιο στατικό τελικό Πρόγραμμα οδήγησης Web Οδηγός ιστού = νέος FirefoxΟδηγός().
Σπάγγος ΕκκίνησηΕπικεφαλίδαΣελίδας = “//h3[κείμενο()='Guru99 Τράπεζα]”;
τελικός Σπάγγος στοιχείο_όνομα_χρήστη = “//είσοδος[@όνομα='uid']”, στοιχείο_κωδικού_πρόσβασης = “//είσοδος[@όνομα='κωδικός πρόσβασης']”,
στοιχείο_σύνδεσης = “//είσοδος[@όνομα='btnLogin']”;
τελικός Σπάγγος Όνομα_χρήστη_τιμή = «mngr28642», τιμή_κωδικού πρόσβασης = «ydAnate»;
τελικός Σπάγγος ID διαχειριστή = “//td[περιέχει(κείμενο(),'Αναγνωριστικό διαχειριστή')]”;
τελικός Σπάγγος νέοςΠελάτης = “//a[@href='addcustomerpage.php']”, Μεταφορά χρημάτων = “//a[@href='FundTransInput.php']”;
/** Αυτή η δοκιμαστική περίπτωση αρχικοποιεί το webDriver */
@Δοκιμή(ομάδες = { «δεσμός», «ισχυροί δεσμοί» })
δημόσιο κενό tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, Μονάδα Χρόνου.ΔΕΥΤΕΡΟΛΕΠΤΑ);
webDriver.get(“https://www.demo.guru99.com/V4/”);
}
/** Ελέγχει την παρουσία της επικεφαλίδας στη σελίδα σύνδεσης */
@Δοκιμή(ομάδες = { «δεσμός» })
δημόσιο κενό tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
«Η επικεφαλίδα της αρχικής σελίδας δεν εμφανίζεται»);
System.out.println(«Εμφανίζεται η επικεφαλίδα της Αρχικής Σελίδας»);
}
/** Εισάγει το όνομα χρήστη, τον κωδικό πρόσβασης και, στη συνέχεια, κάνει κλικ στην επιλογή "Σύνδεση" */
@Δοκιμή(ομάδες = { «δεσμός», «ισχυροί δεσμοί» })
δημόσιο κενό tc03EnterCredentials() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(κωδικός_πρόσβασης_στοιχείο)).sendKeys(τιμή_πρόσβασης_κωδικού πρόσβασης);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Επαληθεύει το αναγνωριστικό διαχειριστή στον πίνακα ελέγχου */
@Δοκιμή(ομάδες = { «ισχυροί δεσμοί» })
δημόσιο κενό tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
«Η ετικέτα αναγνωριστικού διαχειριστή δεν εμφανίζεται»);
System.out.println(«Εμφανίζεται η ετικέτα Manger Id»);
}
/** Ελέγχει τον σύνδεσμο Νέου πελάτη και τον σύνδεσμο Μεταφοράς Χρημάτων στον πίνακα ελέγχου */
@Δοκιμή(ομάδες = { «δεσμός» })
δημόσιο κενό tc05VerifyΥπερσύνδεσμοι() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
«Δεν εμφανίζεται ο νέος υπερσύνδεσμος πελάτη»);
System.out.println(«Εμφανίζεται νέος υπερσύνδεσμος πελάτη»);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
«Ο υπερσύνδεσμος Μεταφοράς Χρημάτων δεν εμφανίζεται»);
System.out.println(«Εμφανίζεται υπερσύνδεσμος Μεταφοράς Χρημάτων»);
}
}
Σημείωση: τα διαπιστευτήρια της δοκιμαστικής τραπεζικής παραμένουν έγκυρα για περίπου 20 ημέρες, επομένως μια τοπική εκτέλεση ενδέχεται να εμφανίσει σφάλμα μη έγκυρων διαπιστευτηρίων μετά τη λήξη αυτού του χρονικού διαστήματος.
Επεξήγηση του κώδικα:
Πέντε μέθοδοι δοκιμής, μία ανά ενέργεια, η καθεμία φέρει ένα groups χαρακτηριστικό στο @Test σχόλιο.
Οι δύο λογικές ετικέτες ομάδας είναι strong_ties και bonding.
- Η πρώτη και η τρίτη μέθοδος περιλαμβάνουν και τις δύο
bondingκαιstrong_ties, επομένως εκτελούνται κάθε φορά που οποιαδήποτε ομάδα περιλαμβάνεται στη σουίτα. Αυτό είναι ένα κοινό μοτίβο για κοινόχρηστα περίπτωση δοκιμής βήματα. - Η δεύτερη μέθοδος επισημαίνεται μόνο με
bonding, επομένως εκτελείται μόνο όταν τοbondingη ομάδα περιλαμβάνεται. - Η τέταρτη μέθοδος επισημαίνεται μόνο με
strong_ties, επομένως εκτελείται μόνο όταν περιλαμβάνεται αυτή η ομάδα. - Η πέμπτη μέθοδος επισημαίνεται μόνο με
bonding, επομένως εκτελείται μόνο όταν τοbondingη ομάδα περιλαμβάνεται.
Ακολουθούν τέσσερα σενάρια εκτέλεσης:
Σενάριο 1: Εκτελέστε κάθε μέθοδο δοκιμής ανεξάρτητα από την ομάδα. Αφαιρέστε το <groups> μπλοκ από το εκτελούμενο XML.
Σενάριο 2: Εκτέλεση μόνο μεθόδων που συνδέονται με μια επιλεγμένη ομάδα, δηλαδή strong_ties or bondingΔείτε το παρακάτω βίντεο.
- Στο πρώτο μέρος του βίντεο, το
<groups>Το μπλοκ σχολιάζεται, επομένως εκτελείται κάθε μέθοδος δοκιμής. - Στο δεύτερο μέρος, το φίλτρο ομάδας επαναφέρεται και εκτελούνται μόνο οι αντίστοιχες μέθοδοι.
Σενάριο 3: Εφαρμόστε το φίλτρο εξαίρεσης για να παραλείψετε επιλεγμένες περιπτώσεις δοκιμής. Ανατρέξτε στο βίντεο.
- Η επίδειξη εξαιρεί
tc02κατά όνομα στο εκτελούμενο XML και η αναφορά αποτελεσμάτων επιβεβαιώνει ότι η εξαιρούμενη μέθοδος δεν εκτελείται.
Σενάριο 4: Εφαρμογή του φίλτρου συμπερίληψης μόνο για εκτέλεση tc01LaunchURL, tc03EnterCredentialsκαι tc05VerifyHyperlinksΠαρακαλώ ανατρέξτε στο βίντεο.
Σε αυτήν την εκτέλεση, εκτελούνται μόνο οι μέθοδοι που αναφέρονται στο φίλτρο συμπερίληψης, ακριβώς όπως έχουν ρυθμιστεί.
Κατεβάστε το δείγμα έργου από τον παρακάτω σύνδεσμο.
Συμπέρασμα
Ομάδες σε TestNG φέρτε τη δομή σε μεγάλο μέγεθος Selenium και σουίτες μονάδων αντικαθιστώντας τους μεμονωμένους διαχωρισμούς κλάσεων με δηλωτικά φίλτρα XML.
Επισημάνετε τις μεθόδους σας με @Test(groups = {...}), στη συνέχεια χρησιμοποιήστε <include>, <exclude>και dependsOnGroups για να οδηγήσουν σε καπνό, παλινδρόμηση και ολοκληρωμένες εκτελέσεις από το ίδιο έργο Maven TestNG 7.x.

