Στο προηγούμενο blog, σας δίδαξα πώς να εκτελέσετε το πρώτο σας τεστ Selenium WebDriver. Σε αυτό το ιστολόγιο, θα καλύψω προηγμένες έννοιες Selenium WebDriver. Έχω ήδη αναφέρει αρκετές φορές ότι το Selenium WebDriver έχει περιορισμούς όσον αφορά τη διαχείριση δοκιμαστικών περιπτώσεων και τη δημιουργία αναφορών δοκιμών. Λοιπόν, ποια είναι η εναλλακτική λύση; Ένα εργαλείο τόσο δημοφιλές όσο το Σελήνιο πρέπει σίγουρα να έχει μια σωστή λύση; Φυσικά! Μπορούμε να χρησιμοποιήσουμε έναν συνδυασμό Selenium και TestNG για να ξεπεράσουμε αυτόν τον περιορισμό και αυτό θα είναι το θέμα της συζήτησης αυτού του ιστολογίου.
καλύτερο λογισμικό για προγραμματισμό java
Σε περίπτωση που είστε νέοι στο Selenium και θέλετε μια εισαγωγή στις βασικές έννοιες, μπορείτε να ξεκινήσετε το ταξίδι σας από εδώ: ; Ωστόσο, οι άλλοι μπορούν να ξεκινήσουν με το TestNG για Selenium από αυτό το ιστολόγιο.Πρέπει επίσης να γνωρίζετε ότι οι οργανισμοί κυνηγούν ενεργά επαγγελματίες με , καθιστώντας μια σημαντική δεξιότητα για τους υπεύθυνους δοκιμών λογισμικού.
Οι προγραμματιστές λογισμικού από όλο τον κόσμο θα συμφωνήσουν ομόφωνα ότι η σύνταξη κώδικα σε δοκιμαστικές περιπτώσεις εξοικονομεί μεγάλο μέρος του χρόνου εντοπισμού σφαλμάτων. Γιατί; Αυτό συμβαίνει επειδή οι δοκιμαστικές περιπτώσεις βοηθούν στη δημιουργία ισχυρού κώδικα και χωρίς σφάλματα. Πώς το κάνει αυτό; Διασπώντας ολόκληρο τον κώδικα σε μικρότερες δοκιμαστικές περιπτώσεις και, στη συνέχεια, αξιολογώντας καθεμία από αυτές τις δοκιμαστικές περιπτώσεις για να περάσει / αποτύχει, μπορούμε να δημιουργήσουμε κώδικα χωρίς σφάλματα. Δεδομένου ότι το Selenium δεν υποστηρίζει την εκτέλεση κώδικα σε δοκιμαστικές περιπτώσεις, πρέπει να χρησιμοποιήσουμε το TestNG για το ίδιο. Εδώ ταιριάζει το TestNG στο πλαίσιο Selenium.
ΔοκιμήNG σημαίνει Δοκιμάστε την επόμενη γενιά και είναι ένα πλαίσιο αυτοματοποίησης δοκιμών ανοιχτού κώδικα εμπνευσμένο από JUnit και NUnit. Λοιπόν, όχι μόνο εμπνευσμένο, αλλά μια αναβάθμιση σε αυτά τα δύο πλαίσια. Μπορείτε λοιπόν να ρωτήσετε ποια είναι η αναβάθμιση εδώ;Η αναβάθμιση με το TestNG είναι ότι παρέχει πρόσθετες λειτουργίες όπως: δοκιμαστικοί σχολιασμοί, ομαδοποίηση, ιεράρχηση, παραμετροποίηση και τεχνικές αλληλουχίας στον κώδικα που δεν ήταν δυνατό νωρίτερα
Εκτός από τη διαχείριση δοκιμαστικών περιπτώσεων, ακόμη και λεπτομερείς αναφορές δοκιμών μπορούν να ληφθούν χρησιμοποιώντας το TestNG. Θα υπάρχει μια περίληψη που θα εμφανίζει τη δοκιμαστική υπόθεση που έχει αποτύχει, μαζί με την ομάδα στην οποία ανήκε και την τάξη στην οποία ανήκει. Όταν τα σφάλματα μπορούν να εντοπιστούν με ακρίβεια έτσι, μπορούν να διορθωθούν αμέσως προς ανακούφιση των προγραμματιστών. Η παρακάτω εικόνα απεικονίζει τη λειτουργία του TestNG.
Λοιπόν, πώς κάνει το TestNG τη δουλειά; Αυτή η ερώτηση θα απαντηθεί στοτην επόμενη ενότητα αυτού του ιστολογίου Selenium WebDriver, όπου θα συζητήσω πώς να διαχειριστώ διάφορες δοκιμαστικές περιπτώσεις χρησιμοποιώντας το TestNG.
Selenium WebDriver With TestNG
Οι δοκιμαστικές περιπτώσεις μπορούν να καθοριστούν και να διαχειριστούν με έναν από τους ακόλουθους τρόπους:
- Δοκιμαστικοί σχολιασμοί
- Προτεραιότητα
- Απενεργοποίηση δοκιμαστικών περιπτώσεων
- Εξάρτηση μεθόδου
- Ομαδοποίηση
- Ισχυρισμοί
- Δημιουργία αναφορών
Επιτρέψτε μου να αρχίσω να εξηγώκαθεμία από αυτές τις λειτουργίες.
Δοκιμαστικοί σχολιασμοί
Πρώτα απ 'όλα, ας θέσουμε στον εαυτό μας αυτήν την ερώτηση: Γιατί πρέπει να χρησιμοποιήσουμε σχολιασμούς; Πότε μπορούμε να τα χρησιμοποιήσουμε; Οι σχολιασμοί στο Σελήνιο χρησιμοποιούνται για τον έλεγχο της επόμενης μεθόδου που θα εκτελεστεί. Οι σχολικοί σχολιασμοί καθορίζονται πριν από κάθε μέθοδο στον κώδικα δοκιμής. Σε περίπτωση που οποιαδήποτε μέθοδος δεν προθετείται με σχολιασμούς, τότε αυτή η μέθοδος θα αγνοηθεί και δεν θα εκτελεστεί ως μέρος του δοκιμαστικού κώδικα. Για τον ορισμό τους, οι μέθοδοι πρέπει να επισημαίνονται απλά με « @Δοκιμή «. Δείτε για παράδειγμα το παρακάτω απόσπασμα κώδικα.
πακέτο testng εισαγωγή org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.annotations.AfterClass import org.testng.annotations.AfterMethod εισαγωγή org.testng.annotations.BeforeClass εισαγωγή org.testng.annotations .BeforeMethod εισαγωγή org.testng.annotations.Test δημόσια τάξη TestAnnotations {@Test public void myTestMethod () {System.out.println ('Inside method: - myTestMethod') WebDriver driver = new FirefoxDriver () driver.get ('http: //www.seleniumframework.com/Practiceform/ ') String title = driver.getTitle () System.out.println (title) driver.quit ()} @BeforeMethod δημόσιο κενό πριν από τη μέθοδο () {System.out.println (' This Το κομμάτι κώδικα εκτελείται πριν από τη μέθοδο: - myTestMethod ') System.setProperty (' webdriver.gecko.driver ',' C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe ')} @AfterMethod public void afterMethod () {System.out.println (' Αυτό το κομμάτι του κώδικα εκτελείται μετά τη μέθοδο: - myTestMethod ')} @BeforeClass public void beforeClass () {Syste m.out.println ('Αυτό το κομμάτι κώδικα εκτελείται πριν από την εκτέλεση της τάξης')} @AfterClass public void afterClass () {System.out.println ('Αυτό το κομμάτι κώδικα εκτελείται μετά την εκτέλεση της τάξης')} }
Στον παραπάνω κώδικα, θα έχετε παρατηρήσει ότι δεν έχω ορίσει μια «κύρια» μέθοδο. Ωστόσο, έχω καθορίσει 5 άλλες μεθόδους. Είναι «myTestMethod», ‘beforeMethod’, ‘afterMethod’, ‘beforeClass’ και ‘afterClass’. Επίσης, σημειώστε τη σειρά ορισμού των μεθόδων στον κώδικα, επειδή δεν θα εκτελεστούν με την ίδια σειρά.
Η μέθοδος «myTestMethod» επισημαίνεται με @Δοκιμή , και είναι η κύρια μέθοδος ή κομμάτι κώδικα που πρέπει να εκτελεστεί. Άλλες σχολιασμένες μέθοδοι θα εκτελεστούν πριν και μετά την εκτέλεση αυτής της μεθόδου. Δεδομένου ότι το 'BeforeMethod' επισημαίνεται με @BeforeMethod , θα εκτελεστεί πριν από την εκτέλεση του «myTestMethod». Ομοίως, το «afterMethod» επισημαίνεται με @AfterMethod , και έτσι θα εκτελεστεί μετά το «myTestMethod».
Ωστόσο, το 'BeforeClass' επισημαίνεται με @Πριν το μάθημα , που σημαίνει ότι θα εκτελεστεί πριν από την εκτέλεση της ίδιας της τάξης. Το όνομα της τάξης μας είναι εδώ TestAnotations και έτσι πριν αρχίσει να εκτελείται η τάξη, θα εκτελεστεί το κομμάτι του κώδικα μέσα στο «BeforeClass». Ομοίως, το 'afterClass' επισημαίνεται με @AfterMethod , και έτσι θα εκτελεστεί μετά το μάθημα TestAnotations εκτελείται.
Εάν εξακολουθείτε να έχετε σύγχυση σχετικά με τη σειρά εκτέλεσης, τότε το παρακάτω απόσπασμα σίγουρα θα σας βοηθήσει.
1. BeforeSuite 2. BeforeTest 3. BeforeClass 4. BeforeM Method 5. Δοκιμή 6. AfterM Method 7. AfterClass 8. AfterTest 9. AfterSuite
Η έξοδος του παραπάνω κώδικα θα είναι:
Αυτό το κομμάτι κώδικα εκτελείται πριν από την εκτέλεση της κλάσης Αυτό το κομμάτι κώδικα εκτελείται πριν από τη μέθοδο: - myTestMethod Inside μέθοδος: - myTestMethod 1493192682118 geckodriver INFO Ακρόαση 127.0.0.1.13676 1493192682713 mozprofile :: profile INFO Χρήση διαδρομής προφίλ C: UsersVardhanAppDataLocalTemp us .wGkcwvwXkl2y 1493192682729 geckodriver :: marionette INFO Εκκίνηση προγράμματος περιήγησης C: Files Program (x86) Mozilla Firefoxirefox.exe 1493192682729 geckodriver :: marionette INFO Σύνδεση με Marionette στο localhost: 59792 [GPU 6152] ΠΡΟΕΙΔΟΠΟΙΗΣΗ: αρχείο: σωλήνας: αρχείο /moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, γραμμή 346 1493192688316 ΠΛΗΡΟΦΟΡΙΕΣ Marionette Ακρόαση στη θύρα 59792 26 Απριλίου 2017 1:14:49 μμ org. openqa.selenium.remote.ProtocolHandshake create ΠΛΗΡΟΦΟΡΙΕΣ συνεδρίας: Εντοπισμένη διάλεκτος: Σφάλμα JavaScript W3C: http://t.dtscout.com/i/?l=http%3A%2F%2Fwww.seleniumframework.com%2FPracticeform%2F&j=, line 1: TypeError: document.getElementsByTagNa me (...) [0] είναι απροσδιόριστο Selenium Framework | Practiceform 1493192695134 Marionette INFO Οι νέες συνδέσεις δεν θα γίνονται πλέον δεκτές 26 Απριλίου 2017 1:14:57 μμ org.openqa.selenium.os.UnixProcess καταστροφή SEVERE: Δεν είναι δυνατή η θανάτωση της διαδικασίας με PID 6724 Αυτό το κομμάτι κώδικα εκτελείται μετά τη μέθοδο: - myTestMethod Αυτό το κομμάτι κώδικα εκτελείται μετά την εκτέλεση της τάξης PASSED: myTestMethod =================================== ============ Προεπιλεγμένη δοκιμή Οι δοκιμές εκτελούνται: 1, Αποτυχίες: 0, Παράλειψη: 0 ======================== ======================= =========================== ==================== Προεπιλεγμένη σουίτα Συνολικές δοκιμές εκτελούνται: 1, Αποτυχίες: 0, Παράλειψη: 0 =============== ================================
Όπως μπορείτε να δείτε από την παραπάνω έξοδο, ο αριθμός των δοκιμών που εκτελέστηκαν είναι 1 και απέτυχε είναι 0. Αυτό σημαίνει ότι ο κωδικός είναι επιτυχής. Ακόμη και η σειρά εκτέλεσης των μεθόδων θα είναι στη σειράΕγώαναφέρθηκε προηγουμένως.
Όταν εκτελείτε αυτόν τον κωδικό στο μηχάνημά σας, το Selenium WebDriver θα ενεργοποιεί το πρόγραμμα περιήγησης Firefox, θα μεταβαίνει στη φόρμα πρακτικής του Selenium Framework, θα κλείνει την παρουσία του προγράμματος περιήγησης και θα εμφανίζει την ίδια έξοδο όπως φαίνεται παραπάνω στο Eclipse IDE.
Έχω χρησιμοποιήσει μόνο 5 διαφορετικούς σχολιασμούς στον κωδικό μου. Αλλά υπάρχουν πολλοί ακόμη σχολιασμοί που μπορούν να χρησιμοποιηθούν για τον έλεγχο της επόμενης μεθόδου που θα εκτελεστεί. Ολόκληρη η λίστα σχολιασμών επεξηγείται στοτραπέζιπαρακάτω:
@BeforeSuite - Η μέθοδος σχολιασμένη με @BeforeSuite θα εκτελεστεί πριν από την εκτέλεση όλων των δοκιμών στη σουίτα.
@AfterSuite - Η μέθοδος σχολιασμένη με @AfterSuite θα εκτελεστεί μετά την εκτέλεση όλων των δοκιμών στη σουίτα.
@BeforeTest - Η μέθοδος σχολιασμένη με @BeforeTest θα εκτελεστεί προτού εκτελεστεί οποιαδήποτε μέθοδος δοκιμής που ανήκει σε μια τάξη.
@AfterTest - Η μέθοδος σχολιασμένη με @AfterTest θα εκτελεστεί μετά την εκτέλεση όλων των μεθόδων δοκιμής που ανήκουν σε μια τάξη.
@BeforeGroup - Η μέθοδος σχολιασμένη με @BeforeGroup θα εκτελεστεί πριν από την εκτέλεση κάθε ομάδας.
@AfterGroup - Η μέθοδος σχολιασμένη με @AfterGroup θα τρέξει μετά την εκτέλεση κάθε ομάδας.
@Πριν το μάθημα - Η μέθοδος σχολιασμένη με @Πριν το μάθημα θα εκτελεστεί μία φορά πριν ενεργοποιηθεί η πρώτη μέθοδος δοκιμής στην τρέχουσα τάξη.
@Μετά το μάθημα - Η μέθοδος σχολιασμένη με @Μετά το μάθημα θα εκτελεστεί μία φορά μετά την εκτέλεση όλων των μεθόδων δοκιμής στην τρέχουσα τάξη.
@BeforeMethod - Η μέθοδος σχολιασμένη με @BeforeMethod θα εκτελεστεί προτού εκτελεστεί οποιαδήποτε μέθοδος δοκιμής μέσα σε μια τάξη.
@AfterMethod - Η μέθοδος σχολιασμένη με @AfterMethod θα εκτελεστεί μετά την εκτέλεση κάθε μεθόδου δοκιμής μέσα σε μια τάξη.
@Δοκιμή - Η μέθοδος σχολιασμένη με @Δοκιμή είναι η κύρια μέθοδος δοκιμής σε ολόκληρο το πρόγραμμα. Άλλες σχολιασμένες μέθοδοι θα εκτελεστούν γύρω από αυτήν τη μέθοδο.
Το στιγμιότυπο οθόνης της αναφοράς TestNG είναιπαρόν παρακάτω: -
Προτεραιότητα
Μιλήσαμε για το πώς διαφορετικές μέθοδοι μπορούν να καθοριστούν έτσι ώστε να εκτελούνται γύρω από το @Δοκιμή μέθοδος. Αλλά, τι γίνεται αν έχετε περισσότερα από ένα @Δοκιμή μέθοδο και θέλετε να ορίσετε τη σειρά εκτέλεσης μεταξύ τους;
Σε αυτήν την περίπτωση, μπορούμεΠνα τα κατατάσσουν εκχωρώντας έναν αριθμό στις σχολιασμένες δοκιμαστικές περιπτώσεις. Όσο μικρότερος είναι ο αριθμός, τόσο υψηλότερη είναι η προτεραιότητα. Η προτεραιότητα μπορεί να οριστεί ως παράμετροι κατά τον καθορισμό των περιπτώσεων δοκιμής. Ωστόσο, εάν δεν έχει εκχωρηθεί προτεραιότητα, τότε οι σχολιασμένες μέθοδοι δοκιμής θα εκτελούνται σύμφωνα με την αλφαβητική σειρά των δοκιμών. Κοιτάξτε τις παραμέτρους των δοκιμαστικών σχολιασμών στο παρακάτω κομμάτι τουκώδικας.
@Test (Priority = 2) public static void FirstTest () {system.out.println ('This is the Test Case number Two λόγω Priority # 2')} @Test (Priority = 1) δημόσιο στατικό κενό SecondTest () { system.out.println ('Αυτή είναι η δοκιμαστική περίπτωση νούμερο ένα λόγω προτεραιότητας # 1')} @Test δημόσιο στατικό κενό FinalTest () {system.out.println ('Αυτή είναι η τελική υπόθεση δοκιμής επειδή δεν υπάρχει προτεραιότητα') )}
Απενεργοποίηση δοκιμαστικών περιπτώσεων
Επιτρέψτε μου να σας δείξω κάτι πιο ενδιαφέρον. Τι γίνεται αν έχετε έναν κωδικό που εκτείνεται σε ένα εκατομμύριο γραμμές, που αποτελείται από εκατοντάδες δοκιμαστικές περιπτώσεις και θέλετε να απενεργοποιήσετε μόνο μία μέθοδο δοκιμής; Δεν χρειάζεται να διαγράψετε κανένα μέρος του κώδικα, μπορούμε απλώς να απενεργοποιήσουμε αυτήν τη μέθοδο δοκιμής.
Η πράξη απενεργοποίησης μιας δοκιμαστικής θήκης γίνεται επίσης μέσω παραμέτρων. Μπορούμε να ορίσουμε το ενεργοποιήθηκε χαρακτηριστικό σε «false». Από προεπιλογή, όλες οι δοκιμαστικές περιπτώσεις θα ενεργοποιηθούν, επομένως δεν χρειάζεται να τις καθορίζουμε κάθε φορά που γράφουμε μια δοκιμή. Κοιτάξτε τις παραμέτρους της τρίτης και τέταρτης μεθόδου στο παρακάτω κομμάτι τουκώδικας.
@Test (Priority = 2, enabled = True) δημόσιο στατικό κενό FirstTest () {system.out.println ('This is the Test Case number Two λόγω Priority # 2')} @Test (Priority = 1, enabled = True ) public static void SecondTest () {system.out.println ('This is the Test Case number One λόγω Priority # 1')} @Test (enabled = false) δημόσιο στατικό κενό SkippedTest () {system.out.println ( 'Αυτή είναι η Περίπτωση δοκιμής που έχει παραλειφθεί επειδή έχει απενεργοποιηθεί')} @Test (enabled = True) δημόσιο στατικό κενό FinalTest () {system.out.println ('Αυτή είναι η Τελική υπόθεση δοκιμής, η οποία είναι ενεργοποιημένη και δεν έχει προτεραιότητα ')}
Εξάρτηση μεθόδου
Τώρα σε περίπτωση που έχετε μια κατάσταση όπου, θέλετε ένα κομμάτι κώδικα να εκτελείται μόνο εάν ικανοποιεί μια συνθήκη ή μόνο εάν μια συγκεκριμένη μέθοδος εκτελείται με επιτυχία, τότε μπορούμε να το κάνουμε χρησιμοποιώντας εξαρτάται από την μέθοδο (). Αυτή είναι βασικά μια κατάσταση εξάρτησης από τη μέθοδο όπου μια μέθοδος θα εκτελεστεί ανάλογα με μια άλλη μέθοδο. Εάν θέσουμε επιπλέον Πάντα Εκτελέστε χαρακτηριστικό στο true, τότε η μέθοδος θα εκτελεστεί ανεξάρτητα από την κατάσταση αποτυχίας / διέλευσης της εξαρτώμενης μεθόδου. Κοιτάξτε τον κωδικό στο παρακάτω απόσπασμα κώδικα.
παράκαμψη έναντι υπερφόρτωσης c ++
@Test public static void FirstTest () {system.out.println ('Αυτή είναι η πρώτη δοκιμαστική υπόθεση που θα εκτελεστεί')} @Test (dependOnMethods = {'FirstTest'}) δημόσιο στατικό κενό SecondTest () {system.out. println ('Αυτή είναι η δεύτερη δοκιμαστική υπόθεση που θα εκτελεστεί Αυτή είναι μια εξαρτημένη μέθοδος')} @Test (dependOnMethods = {'SecondTest'}) δημόσιο στατικό κενό FinalTest () {system.out.println ('This is the Final Test Περίπτωση Θα εκτελεστεί ούτως ή άλλως. ')}
Τώρα, αυτό μας οδηγεί σε μια άλλη σημαντική πτυχή του τεστσχολιασμοί που είναι Ομαδοποίηση .
Ομαδοποίηση
Μέχρι τώρα πρέπει να γνωρίζετε ότι θα υπάρχουν πολλές μέθοδοι ως μέρος της δοκιμαστικής μας υπόθεσης στον κώδικα. Ας υποθέσουμε ότι υπάρχουν 100 δοκιμαστικές περιπτώσεις, αλλά θέλουμε να εκτελέσουμε μόνο 20 δοκιμαστικές περιπτώσεις στην επόμενη δοκιμή μας. Πιστεύετε ότι μπορούμε να το κάνουμε αυτό; Σίγουρα μπορούμε.
Μπορούμε να χρησιμοποιήσουμε ομάδες χαρακτηριστικό για το σκοπό αυτό. Μπορούμε να αντιστοιχίσουμε ένα όνομα ομάδας σε μια σειρά δοκιμαστικών περιπτώσεων και αργότερα να επιλέξουμε να εκτελέσουμε την ομάδα αντί ολόκληρου του κώδικα. Δείτε το παρακάτω απόσπασμα κώδικα για να το καταλάβετεπώς να δημιουργήσετε ομάδες.
@Test (groups = {'MyGroup'}) δημόσιο στατικό κενό FirstTest () {system.out.println ('Αυτό είναι μέρος της ομάδας: MyGroup')} @Test (groups = {'MyGroup'}) δημόσιο στατικό void SecondTest () {system.out.println ('Αυτό είναι επίσης μέρος της ομάδας: MyGroup')} @Test public static void ThirdTest () {system.out.println ('Όμως, αυτό δεν είναι μέρος του Ομάδα: MyGroup ')}
Δοκιμές TestNG
Αυτό μας οδηγεί τώρα στο επόμενο θέμα στο TestNG που είναι ισχυρισμοί. Όπως υποδηλώνει το όνομα, οι ισχυρισμοί μπορούν να χρησιμοποιηθούν σε μεθόδους δοκιμής για τον προσδιορισμό της κατάστασης επιτυχίας / αποτυχίας μιας δοκιμής. Με βάση την πραγματική / λάθος κατάσταση μιας δήλωσης, οι δοκιμές θα περάσουν / αποτύχουν.
Στον παρακάτω κώδικα έχω συμπεριλάβει 3 μεθόδους δοκιμής, όπου η πρώτη και η τρίτη μέθοδος έχουν συνθήκη περάσματος και η δεύτερη μέθοδος θα έχει συνθήκη αποτυχίας. Δείτε τον κωδικό για τον εαυτό σας.
πακέτο testng εισαγωγή org.testng.annotations.Test import org.testng.annotations.BeforeMethod εισαγωγή org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.Assert import org.testng.annotations.AfterMethod Δημόσια κλάση Assertions {@BeforeMethod public void BeforeMethod () {System.setProperty ('webdriver.gecko.driver', 'C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe')} δημόσια boolean isEqual (int a, int b) {if (a == b ) {return true} else {return false}} @Test public void testEquality1 () {Assert.assertEquals (true, isEqual (10, 10)) System.out.println ('This is a pass condition')} @Test δημόσιο void testEquality2 () {Assert.assertEquals (true, isEqual (10, 11)) System.out.println ('This is a fail condition')} @Test public void getTitle () {WebDriver driver = νέο πρόγραμμα οδήγησης FirefoxDriver (). get ('https://www.gmail.com') String title = driver.getTitle () Assert.assertEquals (τίτλος, 'Gmail') System.out.println ('Αυτή είναι πάλι μια συνθήκη πάσου')} }
Όταν κοιτάξετε την αναφορά που δημιουργείται μετά από αυτήν την εκτέλεση, τότε θα παρατηρήσετε ότι από τις τρεις δοκιμές, μία απέτυχε και δύο πέρασαν. Ένα άλλο σημαντικό σημείο που πρέπει να σημειωθεί είναι ότι όταν ένας ισχυρισμός αποτύχει, άλλες εντολές / γραμμές κώδικα σε αυτό το τεστ θα παραλειφθούν. Μόνο όταν ο ισχυρισμός είναι επιτυχής, η επόμενη γραμμή κώδικα θα εκτελεστεί σε αυτό το τεστ. Ελέγξτε την έξοδο παρακάτω όπου system.out.println έχει εκτελέσει μόνο για την πρώτη και την τρίτη μέθοδο.
1493277977348 geckodriver INFO Ακρόαση στις 127.0.0.1:47035 1493277977993 mozprofile :: προφίλ INFO Χρήση διαδρομής προφίλ C: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: Firefox77877877 Σύνδεση με Marionette στο localhost: 50758 [GPU 6920] ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σφάλμα σωλήνα: 109: αρχείο c: / builds / moz2_slave / m-rel-w32-00000000000000000000 / build / src / ipc / chromium / src / chrome / common / ipc_channel_win. cc, line 346 1493277981742 Marionette INFO Ακρόαση στη θύρα 50758 27 Απριλίου 2017 12:56:22 μμ org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: W3C Αυτή είναι και πάλι μια κατάσταση περάσματος getTitle PASSED: testEquality1 FAILED: testEquality2 java.lang.AssertionError: Αναμένεται [false] αλλά βρέθηκε [true] στο org.testng.Assert.fail (Assert.java:93) στο org.testng.Assert.failNotEquals (Assert.java: 512) στο org.testng.Assert.assertE qualsImpl (Assert.java : 34) στο org.testng.Assert.assertEquals (Assert.javaonym15) στο org.testng.Assert.assertEquals (Assert.java:304) στο org.testng.Assert.assertEquals (Assert.java : 314) στο testng.Assertions.testEquality2 (Assertions.java:38) στο sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (Άγνωστη πηγή) στο sun.reflect.DelegatingMethodAccessorIccess. Πηγή) στο java.lang.reflect.Method.invoke (Άγνωστη πηγή) στο org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) στο org.testng.internal.Invoker.invokeMethod (Invoker.java:661) στο org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) στο org.testng.internal.Invoker.invokeTestMethods (Invoker.java : 1919) στο org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker.java ) στο org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) στο org.testng.TestRunner.privateRun (TestRunner.java:744) στο org.testng.TestRu nner.run (TestRunner.java:602) στο org.testng.SuiteRunner.runTest (SuiteRunner.java:380) στο org.testng.SuiteRunner.runΑκολουθεί (SuiteRunner.java:375) στο org.testng.SuiteRunner.privateRun (SuiteRunner .java: 340) στο org.testng.SuiteRunner.run (SuiteRunner.java: 239) στο org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) στο org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.jun) στο org.testng.TestNG.runSuitesSequential (TestNG.java : 1301) στο org.testng.TestNG.runSuitesLocally (TestNG.java: 1126) στο org.testng.TestNG.runSuites (TestNG.java: 144) στο org.testng. TestNG.run (TestNG.java : 1111) στο org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java: 1) στο org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java: 2330) στο org.testng. .RemoteTestNG.main (RemoteTestNG.java:76) ======================================= ======== Προεπιλεγμένη δοκιμή Οι δοκιμές εκτελούνται: 3, Αποτυχίες: 1, Παράλειψη: 0 ============================ =================== =============================== ================ Προεπιλεγμένη σειρά Συνολικές δοκιμές: 3, Αποτυχίες: 1, Παράλειψη: 0 =================================== ============
Έτσι, αυτό είναι το τέλος των εννοιών που σχετίζονται με τη διαχείριση δοκιμαστικών περιπτώσεων. Μένουμε με ένα ακόμη θέμα, και αυτό είναι η δημιουργία αναφορών. Η δημιουργία αναφορών είναι το τελευταίο θέμα σε αυτό το σεμινάριο Selenium WebDriver επειδή οι αναφορές μπορούν να δημιουργηθούν μόνο μετά από όλαεκτελούνται δοκιμές.
java μετατροπή από διπλό σε int
Δημιουργία αναφορών
Το πιο σημαντικό πράγμα που πρέπει να σημειώσετε είναι ότι η αναφορά θα δημιουργηθεί μόνο μέσω αρχείου .xml. Αυτό σημαίνει, είτε πρόκειται για μέθοδο, είτε για κλάση, είτε για ομάδα που θέλετε να δοκιμάσετε, όλα πρέπει να καθοριστούν στο αρχείο .xml.
Πρώτα λοιπόν μπορείτε να δημιουργήσετε έναν νέο φάκελο στο έργο σας και να δημιουργήσετε ένα νέο αρχείο μέσα σε αυτόν το φάκελο και να δώσετε ένα όνομα στο αρχείο και να το αποθηκεύσετε με επέκταση .xml. Μπορείτε να δημιουργήσετε το νέο φάκελο και το αρχείο κάνοντας δεξί κλικ στον εξερευνητή πακέτων. Μόλις δημιουργήσετε το αρχείο, μεταβείτε στην καρτέλα προέλευσης από το κάτω μέρος του παραθύρου και εισαγάγετε τις διαμορφώσεις όπως καθορίζονται στο παρακάτω απόσπασμα.
Η πρώτη γραμμή είναι ο ορισμός τύπου εγγράφου XML. Αυτό είναι τυπικό και υποχρεωτικό για όλες τις αναφορές δοκιμών. Όμως, οι άλλες γραμμές είναι αρκετά αυτονόητες. Έχω χρησιμοποιήσει τις ανοιχτές ετικέτες για σουίτα, δοκιμές, τάξεις και τάξεις. Η ετικέτα Classes μπορεί να έχει μια ή περισσότερες τάξεις μέσα σε αυτήν. Έτσι, μπορεί να χρησιμοποιηθεί αν θέλουμε να δημιουργήσουμε μια αναφορά όπου δοκιμάζουμε πολλές τάξεις. Αυτό είναι βολικό ειδικά για προγραμματιστές που θέλουν να δοκιμάσουν ένα μεγάλο κομμάτι κώδικα.
Ωστόσο, επιστρέφοντας στην αναφορά μας, μπορείτε να ονομάσετε κάθε σουίτα ή δοκιμή ή τάξη αφού ανοίξετε αυτές τις ετικέτες και θυμηθείτε να κλείσετε κάθε ετικέτα που ανοίγετε. Έχω δώσει το όνομα της σουίτας μου ως TestNGs , όνομα δοκιμής ως Δοκιμή Σχολιασμοί και όνομα κλάσης ως testng.TestAnotations. Σημειώστε ότι το όνομα της τάξης έχει τη μορφή ' packagename.classname » .
Όταν εκτελείτε αυτό το αρχείο ως TestNG suite, η εκτέλεση θα ξεκινήσει και θα λάβετε τις λεπτομερείς αναφορές δοκιμών. Θα λάβετε τη δοκιμαστική έξοδο στην καρτέλα της κονσόλας σας και το αποτέλεσμα της δοκιμαστικής σουίτας στην επόμενη καρτέλα. Η αναφορά που έχω δημιουργήσει για την εκτέλεση του κωδικού μου είναισετο παρακάτω στιγμιότυπο οθόνης. Θα παρατηρήσετε ότι αυτή τη φορά, υπάρχει ένα όνομα σουίτας, ένα όνομα δοκιμής, ένα όνομα κλάσης μαζί με το χρόνο που απαιτείται για την εκτέλεση καθεμιάς από αυτές.
Σε περίπτωση που θέλετε να προβάλετε την αναφορά HTML (Αναφορά ευρετηρίου ή Emailable-report), μπορείτε να μεταβείτε στο δοκιμή-έξοδος φάκελο στον κατάλογο έργου στο χώρο εργασίας σας. Κάνοντας κλικ σε αυτές, μπορείτε να προβάλετε τις αναφορές ακόμη και αργότερα. Παρακάτω είναι τα στιγμιότυπα οθόνης τους.
Αναφορά ευρετηρίου : -
Διαθέσιμη αναφορά : -
Αυτό μας φέρνει στο τέλος αυτού του ιστολογίου Selenium WebDriver. Ήρθε η ώρα να ρυθμίσετε την έκλειψη στο τέλος σας, να εγκαταστήσετε τα διάφορα πακέτα Selenium, να εγκαταστήσετε το TestNG και να ξεκινήσετε να γράφετε τις δοκιμαστικές σας θήκες.
Μπορείτε να δείτε το παρακάτω βίντεο εκμάθησης Selenium WebDriver για να δείτε μια επίδειξη των διαφόρων εννοιών που εξηγούνται σε αυτό το ιστολόγιο.
Εκπαίδευση σεληνίου | Πλαίσιο TestNG για σελήνιο | Έντρεκα
Αυτό το βίντεο εκπαίδευσης Edureka Selenium θα σας καθοδηγήσει στις αναλυτικές λεπτομέρειες του Selenium WebDriver. Αυτό το βίντεο εκμάθησης Selenium είναι ιδανικό τόσο για αρχάριους όσο και για επαγγελματίες που θέλουν να βελτιώσουν τα βασικά των εντολών WebDriver και να μάθουν πώς μπορεί να χρησιμοποιηθεί το TestNG με το Selenium για τη διαχείριση διαφόρων δοκιμαστικών περιπτώσεων.
Εάν θέλετε να μάθετε το Σελήνιο και να δημιουργήσετε μια καριέρα στον τομέα των δοκιμών, τότε ρίξτε μια ματιά στο διαδραστικό μας, ζωντανό διαδικτυακό εδώ, συνοδεύεται από υποστήριξη 24 * 7 για να σας καθοδηγήσει καθ 'όλη τη διάρκεια της μαθησιακής σας περιόδου.
Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.