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

Τι είναι TestNG?
TestNG είναι ένα πλαίσιο δοκιμών αυτοματοποίησης όπου το "NG" σημαίνει "Επόμενη Γενιά". TestNG εμπνέεται από JUnit και χρήσεις Java σχολιασμούς (@) για τον έλεγχο της ροής των δοκιμών. Ξεπερνά JUnitπροηγούμενους περιορισμούς του και έχει σχεδιαστεί για να κάνει δοκιμή από άκρο σε άκρο ευκολότερη.
Με TestNG Μπορείτε να δημιουργήσετε μια σωστή αναφορά και να δείτε αμέσως πόσες δοκιμές πέρασαν με επιτυχία, απέτυχαν ή παραλείφθηκαν. Μπορείτε επίσης να εκτελέσετε ξανά μόνο τις περιπτώσεις που απέτυχαν.
Για παράδειγμα:
- Ας υποθέσουμε ότι έχετε πέντε περιπτώσεις δοκιμών, καθεμία με τη δική της μέθοδο, γραμμένες χωρίς TestNGΤρία περνούν. Το τέταρτο αποτυγχάνει. Αφού διορθώσετε το τέταρτο, θέλετε να εκτελέσετε ξανά μόνο αυτό, αφού τα τρία πρώτα έχουν ήδη περάσει. Αυτό είναι δύσκολο να γίνει με απλό κώδικα μεθόδου main().
- TestNG παρέχει ένα
testng-failed.xmlαρχείο στοtest-outputφάκελο. Η εκτέλεση αυτού του XML εκτελεί ξανά μόνο τις αποτυχημένες υποθέσεις.
Πέρα από αυτό, θα μάθετε τα πλεονεκτήματα του TestNG, πώς να γράφετε μεθόδους δοκιμών με σχολιασμούς @Test και πώς να μετατρέπετε τις κλάσεις σας σε μια σουίτα δοκιμών που εκτελείται από Eclipse ή τη γραμμή εντολών.
Γιατί να χρησιμοποιήσετε TestNG μαζί σου, Selenium?
Από προεπιλογή, Selenium οι δοκιμές δεν παράγουν αποτελέσματα με ωραία μορφοποίηση. Με TestNG συνδεδεμένος στην πρίζα, ο δοκιμαστικός δρομέας εκπέμπει μια δομημένη αναφορά που μπορείτε να μοιραστείτε με την ομάδα.
γέφυρα Selenium προτιμούν οι χρήστες TestNG επί JUnit λόγω του ευρύτερου συνόλου χαρακτηριστικών του. Τα βασικά χαρακτηριστικά για Selenium είναι:
- Αναφορές που περιλαμβάνουν τον αριθμό των δοκιμαστικών περιπτώσεων που εκτελέστηκαν, πέρασαν με επιτυχία, απέτυχαν και παραλείφθηκαν.
- Εύκολη ομάδαping δοκιμαστικών περιπτώσεων μέσω ενός
testng.xmlαρχείο, με προτεραιότητες εκτέλεσης. - Επαναλάβετε μια δοκιμή πολλές φορές χωρίς επαναλήψεις χρησιμοποιώντας
invocationCount. - Εκτελέστε πολλαπλές δοκιμές σε πολλά προγράμματα περιήγησης — διασταυρούμεναδοκιμή προγράμματος περιήγησης Υποστήριξη.
- Ομαλή ενσωμάτωση με το Maven, Jenkinsκαι άλλα εργαλεία CI.
- Readable σχολιασμοί — για παράδειγμα, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
- Selenium Το WebDriver δεν διαθέτει εγγενή αναφορά. TestNG καλύπτει αυτό το κενό με μια καθαρή αναφορά HTML όπως αυτή που ακολουθεί.
- TestNG απλοποιεί τον κώδικα δοκιμών. Δεν χρειάζεστε πλέον μια στατική μέθοδο main. Οι σχολιασμοί καθορίζουν τι εκτελείται και πότε.
- Οι εξαιρέσεις που δεν έχουν εντοπιστεί αντιμετωπίζονται με χάρη από TestNGΑναφέρονται ως αποτυχημένα βήματα χωρίς να τερματίζεται ολόκληρη η εκτέλεση.
Πλεονεκτήματα της TestNG επί JUnit
TestNG προσφέρει τρία σημαντικά πλεονεκτήματα σε σχέση με JUnit:
- Οι σχολιασμοί είναι πιο εύκολοι στην κατανόηση και τη χρήση.
- Οι δοκιμαστικές περιπτώσεις μπορούν να ομαδοποιηθούν και να ιεραρχηθούν με λιγότερη προσπάθεια.
- Η παράλληλη εκτέλεση δοκιμών υποστηρίζεται αμέσως.
Τι είναι μια σχολίαση στο TestNG?
Σχολιασμοί σε TestNG είναι γραμμές κώδικα που τοποθετούνται πάνω από μια μέθοδο για να ελέγχουν τον τρόπο εκτέλεσής της. Ξεκινούν πάντα με το σύμβολο @. Ένα απλό παράδειγμα φαίνεται παρακάτω.
Οι σχολιασμοί καλύπτονται λεπτομερώς στην ενότητα «Σχόλια που χρησιμοποιούνται σε TestNG" αργότερα σε αυτό το σεμινάριο, επομένως το παραπάνω παράδειγμα είναι απλώς για να ορίσουμε τις προσδοκίες. TestNG οι σχολιασμοί είναι πιο εύκολο να κωδικοποιηθούν και να διαβαστούν από τους JUnit ισοδύναμα, και είναι απαραίτητα κατά την εκτέλεση δοκιμών σε Selenium Πλέγμα όπου η παράλληλη εκτέλεση έχει σημασία.
Πώς να γράψετε δοκιμαστικές περιπτώσεις TestNG
Γράφοντας α TestNG Η δοκιμαστική περίπτωση περιλαμβάνει τρία βήματα:
- Γράψτε τη λογική και την τοποθεσία της επιχείρησής σας TestNG σχολιασμοί πάνω από κάθε μέθοδο.
- Προσθέστε μεταδεδομένα όπως όνομα κλάσης, όνομα ομάδας και όνομα πακέτου.
- Εκτελέστε το TestNG κλάση από το IDE σας ή τη γραμμή εντολών.
Δημιουργήστε μια δοκιμαστική περίπτωση χρησιμοποιώντας TestNG Οι σχολιασμοί
Τώρα θα δημιουργήσουμε την πρώτη μας δοκιμαστική περίπτωση χρησιμοποιώντας TestNG σχολιασμοί σε SeleniumΠριν γράψετε το τεστ, ρυθμίστε ένα νέο TestNG έργο στο Eclipse και καλέστε το ΌνομαTestNGΕΡΓΟ.
Δημιουργία ενός νέου TestNG ΕΡΓΟ
Βήμα 1) Πατήστε Αρχείο > Νέο > Java ΕΡΓΟ.
Βήμα 2) εισάγετε ΌνομαTestNGΕΡΓΟ ως όνομα έργου και κάντε κλικ Επόμενο.
Βήμα 3) Εισαγάγετε το TestNG βιβλιοθήκες. Κάντε κλικ στο βιβλιοθήκες καρτέλα και στη συνέχεια Προσθήκη βιβλιοθήκης….
Βήμα 4) Στο Προσθήκη βιβλιοθήκης διαλόγου, επιλέξτε TestNG και κάντε κλικ στο κουμπί Επόμενο.
Βήμα 5) Πατήστε φινίρισμα.
TestNG θα πρέπει τώρα να εμφανίζεται στη λίστα Βιβλιοθηκών.
Βήμα 6) Προσθέστε τα αρχεία JAR που περιέχουν το Selenium API. Αυτά προέρχονται από το Java πρόγραμμα οδήγησης πελάτη που λήφθηκε από selenium.dev/λήψεις.
Μεταβείτε στον φάκελο όπου βρίσκεται το Selenium Τα JAR αποθηκεύονται.
Αφού προσθέσετε τα εξωτερικά JAR, η οθόνη θα πρέπει να μοιάζει με αυτήν.
Βήμα 7) Πατήστε φινίρισμα. Το νέο ΌνομαTestNGΕΡΓΟ εμφανίζεται στην Εξερεύνηση Πακέτων.
Πώς να δημιουργήσετε ένα νέο TestNG Αρχείο δοκιμής
Με το έργο έτοιμο, δημιουργήστε ένα νέο TestNG αρχείο.
Βήμα 1) Κάντε δεξί κλικ στο src φάκελο και επιλέξτε Νέο > Άλλο….
Βήμα 2) Αναπτύξτε το TestNG φάκελο, επιλέξτε TestNG τάξη, και κάντε κλικ στο κουμπί Επόμενο.
Βήμα 3) Εισαγάγετε τις τιμές που εμφανίζονται παρακάτω και κάντε κλικ φινίρισμα. ο Java το αρχείο ονομάζεται ΌνομαTestNGΑρχεία.
Βήμα 4) Eclipse δημιουργεί το TestNG πρότυπο που φαίνεται παρακάτω.
Κωδικοποίηση Η Πρώτα Σας TestNG Δοκιμαστική θήκη
Δημιουργήστε το πρώτο περίπτωση δοκιμής που επιβεβαιώνει τον τίτλο του Mercury Αρχική σελίδα περιηγήσεων.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
// Selenium 4 ships Selenium Manager, so the driver path is no longer required.
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.quit();
}
}
Πράγματα που πρέπει να προσέξετε:
- TestNG δεν χρειάζεται ένα
main()μέθοδος. - Οι μέθοδοι δεν χρειάζεται να είναι στατικές.
- The @Δοκιμή σημάδια σχολιασμού
verifyHomepageTitle()ως δοκιμαστική περίπτωση. - Οι σχολιασμοί βρίσκονται στο
org.testng.annotations.*πακέτο. - The Προσθέστε τάξη από
org.testng.Assertοδηγεί σε επαληθεύσεις.
Μπορεί να έχετε πολλαπλές σχολιασμοί @Test σε ένα μόνο TestNG αρχείο. Αυτό το καλύπτουμε στο «Σχόλια που χρησιμοποιούνται σε TestNG" τμήμα.
Εκτέλεση του τεστ
Κάντε δεξί κλικ στο αρχείο και εκτελέστε το ως TestNG δοκιμή. Eclipse παράγει δύο εξόδους — ένα αποτέλεσμα κειμένου στο παράθυρο της Κονσόλας και ένα γραφικό αποτέλεσμα στο TestNG Παράθυρο αποτελεσμάτων.
Έλεγχος Αναφορών Δημιουργήθηκε από TestNG
Το παράθυρο της Κονσόλας παρέχει μια σύνοψη με βάση το κείμενο, ενώ το TestNG Το παράθυρο αποτελεσμάτων εμφανίζει μια γραφική απεικόνιση.
Δημιουργία αναφορών HTML
TestNG μπορεί επίσης να δημιουργήσει πλήρεις αναφορές HTML.
Βήμα 1) Μετά την εκτέλεση ΌνομαTestNGΑρχεία, κάντε δεξί κλικ στο έργο και επιλέξτε Φρεσκάρω.
Βήμα 2) A δοκιμαστική έξοδος εμφανίζεται ο φάκελος. Αναπτύξτε τον και εντοπίστε index.html — η αναφορά HTML για την πιο πρόσφατη εκτέλεση.
Βήμα 3) Double-κλικ index.html να το ανοίξω μέσα EclipseΤο πρόγραμμα περιήγησης. Πατήστε F5 για ανανέωση μετά από μελλοντικές εκτελέσεις.
Σχολιασμοί που χρησιμοποιούνται σε TestNG
Έχετε ήδη δει την σχολίαση @Test. Η υπόλοιπη ενότητα καλύπτει τις πιο χρήσιμες προηγμένες σχολιάσεις.
Πολλαπλές Δοκιμασίες
Ενα μονό TestNG Το αρχείο μπορεί να περιέχει πολλαπλές σχολιασμοί @Test. Από προεπιλογή, οι μέθοδοι που σχολιάζονται με @Test εκτελούνται με αλφαβητική σειρά. Στον παρακάτω κώδικα, οι μέθοδοι c_test, a_testκαι b_test εκτελούνται αλφαβητικά ανεξάρτητα από τη σειρά προέλευσης.
Εκτελέστε τον κώδικα και ανοίξτε index.html. Κλίκ Χρονολογική προβολή.
Παράμετροι
Για να παρακάμψετε την προεπιλεγμένη σειρά, χρησιμοποιήστε το priority παράμετρος. Οι παράμετροι είναι λέξεις-κλειδιά που τροποποιούν τη συμπεριφορά ενός σχολιασμού.
- Αντιστοιχίστε μια τιμή με
=. - Τυλίξτε τις παραμέτρους σε παρενθέσεις που τοποθετούνται αμέσως μετά την σχολίαση, όπως φαίνεται παρακάτω.
TestNG Εκτελεί τις σχολιασμούς @Test από την τιμή χαμηλότερης προτεραιότητας προς την υψηλότερη. Οι αριθμοί προτεραιότητας δεν χρειάζεται να είναι διαδοχικοί.
Η αναφορά HTML επιβεβαιώνει ότι οι μέθοδοι εκτελούνται με αύξουσα σειρά προτεραιότητας.
Πολλαπλές Παράμετροι
Εκτός priority, Το @Test αποδέχεται το alwaysRun παράμετρος (αληθής ή ψευδής). Για να χρησιμοποιήσετε δύο ή περισσότερες παραμέτρους σε μία μόνο σημείωση, διαχωρίστε τες με κόμμα:
@Test(priority = 0, alwaysRun = true)
@BeforeTest και @AfterTest
| @BeforeTest | Μέθοδοι που εκτελούνται σε αυτήν την εκτέλεση σχολίων πριν από την πρώτη δοκιμαστική περίπτωση στο TestNG φιλέτο. |
| @AfterTest | Μέθοδοι που εκτελούνται σε αυτήν την εκτέλεση σχολίων μετά από όλες τις δοκιμαστικές περιπτώσεις στο TestNG ολοκλήρωση αρχείου. |
Σκεφτείτε τον παρακάτω κώδικα.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
Από τον πίνακα και τον κώδικα, μπορούμε να προβλέψουμε ότι η ακολουθία θα είναι:
- 1η —
launchBrowser() - 2η —
verifyHomepageTitle() - 3η —
terminateBrowser()
Η τοποθέτηση των μπλοκ σχολιασμού στο αρχείο προέλευσης δεν επηρεάζει τη σειρά εκτέλεσής τους. Δοκιμάστε να αναδιατάξετε τις μεθόδους όπως φαίνεται παρακάτω.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@AfterTest // Jumbled
public void terminateBrowser() {
driver.quit();
}
@BeforeTest // Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test // Jumbled
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
Εκτελέστε τον κώδικα και επαληθεύστε το αποτέλεσμα.
@BeforeMethod και @AfterMethod
| @BeforeMethod | Μέθοδοι που εκτελούνται σε αυτήν την εκτέλεση σχολίων πριν από κάθε μέθοδο δοκιμής. |
| @AfterMethod | Μέθοδοι που εκτελούνται σε αυτήν την εκτέλεση σχολίων μετά από κάθε μέθοδο δοκιμής. |
In Mercury Περιηγήσεις, ας υποθέσουμε ότι θέλουμε να επαληθεύσουμε τους τίτλους δύο σελίδων-στόχων στις οποίες φτάσαμε από την αρχική σελίδα.
Η ροή της δοκιμής είναι:
- Ανοίξτε την αρχική σελίδα και επαληθεύστε τον τίτλο της.
- Κάντε κλικ στην ΕΓΓΡΑΦΗ και επαληθεύστε τον τίτλο της σελίδας στόχου.
- Επιστρέψτε στην αρχική σελίδα και επαληθεύστε τον τίτλο.
- Κάντε κλικ στο SUPPORT και επαληθεύστε τον τίτλο της σελίδας στόχου.
- Επιστρέψτε στην αρχική σελίδα και επαληθεύστε ξανά τον τίτλο.
Ο παρακάτω κώδικας δείχνει πώς οι @BeforeMethod και @AfterMethod χειρίζονται τα επαναλαμβανόμενα βήματα.
package firsttestngpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@BeforeMethod
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test(priority = 0)
public void register() {
driver.findElement(By.linkText("REGISTER")).click();
expected = "Register: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@Test(priority = 1)
public void support() {
driver.findElement(By.linkText("SUPPORT")).click();
expected = "Under Construction: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void goBackToHomepage() {
driver.findElement(By.linkText("Home")).click();
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
Αφού εκτελέσετε τη δοκιμή, TestNG αναφέρει την παρακάτω ακολουθία.
Με λίγα λόγια: τοποθετήστε τα σκαλοπάτια εγκατάστασης μέσα @BeforeMethod και καθαρισμός ή επαναφορά πλοήγησης στο εσωτερικό @AfterMethod έτσι ώστε κάθε περίπτωση δοκιμής να ξεκινά και να τελειώνει σε μια γνωστή κατάσταση.
Περίληψη της TestNG Οι σχολιασμοί
- @BeforeSuite: εκτελείται πριν από όλες τις δοκιμές στη σουίτα.
- @AfterSuite: εκτελείται μετά από όλες τις δοκιμές στη σουίτα.
- @ΠρινΔοκιμή: εκτελείται πριν από οποιαδήποτε μέθοδο δοκιμής που ανήκει στις κλάσεις μέσα σε ένα ετικέτα.
- @AfterTest: εκτελείται μετά από όλες τις μεθόδους δοκιμής που ανήκουν στις κλάσεις μέσα σε ένα ετικέτα.
- @BeforeGroups: εκτελείται λίγο πριν από την πρώτη μέθοδο δοκιμής που ανήκει σε οποιαδήποτε καταχωρημένη ομάδα.
- @AfterGroups: εκτελείται λίγο μετά την τελευταία μέθοδο δοκιμής που ανήκει σε οποιαδήποτε ομάδα που αναφέρεται.
- @Πριν την Κλάση: εκτελείται πριν από την πρώτη μέθοδο δοκιμής στην τρέχουσα κλάση.
- @AfterClass: εκτελείται μετά από όλες τις μεθόδους δοκιμής στην τρέχουσα κλάση.
- @BeforeMethod: εκτελείται πριν από κάθε μέθοδο δοκιμής.
- @AfterMethod: εκτελείται μετά από κάθε μέθοδο δοκιμής.
- @Δοκιμή: σηματοδοτεί τη μέθοδο ως δοκιμαστική περίπτωση.

































