Προτεραιότητα TestNG @Test στο Σελήνιο

Πίνακας περιεχομένων:

Anonim

Το TestNG είναι ένα πλαίσιο δοκιμών, το οποίο καλύπτει διαφορετικούς τύπους σχεδίων δοκιμών, όπως δοκιμή μονάδας, δοκιμή λειτουργίας, δοκιμή από άκρο σε άκρο, δοκιμή διεπαφής χρήστη και δοκιμή ολοκλήρωσης.

Μπορείτε να εκτελέσετε μία ή περισσότερες δοκιμαστικές περιπτώσεις στον κώδικα Testng.

Εάν η προτεραιότητα δοκιμής δεν έχει οριστεί κατά τη διάρκεια, εκτελώντας πολλές δοκιμαστικές περιπτώσεις, το TestNG εκχωρεί σε @Test προτεραιότητα ως μηδέν (0).

Τώρα, ενώ τρέχετε. Οι χαμηλότερες προτεραιότητες θα προγραμματιστούν πρώτα.

Σε αυτό το σεμινάριο, θα μάθετε -

  • Επίδειξη κώδικα TestNG χωρίς προτεραιότητα
  • Επίδειξη κώδικα TestNG χωρίς προτεραιότητα με αλφαβητική σειρά
  • Τρόπος ορισμού προτεραιότητας στο TestNG
  • Μέθοδοι με την ίδια προτεραιότητα
  • Συνδυασμός μεθόδων προτεραιότητας (με ίδια προτεραιότητα) και μεθόδων χωρίς προτεραιότητα

Επίδειξη κώδικα TestNG χωρίς προτεραιότητα

Ας πάρουμε ένα σενάριο όπου θα απαιτείται αλληλουχία για να περάσουμε όλες τις δοκιμαστικές περιπτώσεις:

Σενάριο: Δημιουργήστε έναν κωδικό όπου απαιτείται να εκτελέσετε μια αναζήτηση Google με μια συγκεκριμένη λέξη-κλειδί, πείτε "Facebook". Τώρα, βεβαιωθείτε ότι ο τίτλος του προγράμματος περιήγησης έχει αλλάξει σε "Facebook - Αναζήτηση Google".

Σημείωση: Κάθε βήμα που κωδικοποιείτε πρέπει να γίνεται σε ξεχωριστές μεθόδους

Μέθοδος 1 : Άνοιγμα προγράμματος περιήγησης λένε Firefox (openBrowser ())

Μέθοδος 2 : Εκκίνηση του Google.com (launchGoogle ())

Μέθοδος 3 : Εκτελέστε μια αναζήτηση χρησιμοποιώντας το "Facebook" (performSearchAndClick1stLink ())

Μέθοδος 4 : Επαλήθευση τίτλου σελίδας αναζήτησης Google (FaceBookPageTitleVerification ())

Κωδικός για το σενάριό μας :

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;εισαγωγή org.testng.Assert;εισαγωγή org.testng.annotations.Test;δημόσια τάξη Priority_In_testNG {Πρόγραμμα οδήγησης WebDriver;// Μέθοδος 1: Ανοίξτε το Brower, πείτε Firefox@Δοκιμήpublic void openBrowser () {πρόγραμμα οδήγησης = νέο FirefoxDriver ();}// Μέθοδος 2: Εκκίνηση του Google.com@Δοκιμήδημόσια άκυρη εκκίνησηGoogle () {driver.get ("http://www.google.co.in");}// Μέθοδος 3: Εκτελέστε αναζήτηση χρησιμοποιώντας το "Facebook"@Δοκιμήδημόσιο κενό peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Αναζήτηση']")). sendKeys ("Facebook");}// Μέθοδος 4: Επαληθεύστε τον τίτλο της σελίδας αναζήτησης Google.@Δοκιμήpublic void FaceBookPageTitleVerification () ρίχνει την εξαίρεση {driver.findElement (By.xpath (".//*[@ value = 'Search']")). κάντε κλικ ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Περιέχει ("Facebook - Αναζήτηση Google"), true);}}

Επεξήγηση του κώδικα

Όπως αναφέρθηκε παραπάνω, έχουμε δημιουργήσει 4 δοκιμαστικές περιπτώσεις για την εκτέλεση κάθε ενέργειας σε ανεξάρτητες μεθόδους.

  • Η πρώτη μέθοδος (openBrowser) δηλώνει την προετοιμασία του προγράμματος περιήγησης Firefox.
  • Η δεύτερη μέθοδος (launchGoogle) δηλώνει ότι η εκκίνηση του Google.com είναι στο αρχικοποιημένο πρόγραμμα περιήγησης.
  • Η τρίτη μέθοδος (peformSeachAndClick1stLink) δηλώνει ότι εκτελεί μια αναζήτηση στο πλαίσιο αναζήτησης (με xpath (".//*[@title='Search ']") με έναν όρο αναζήτησης ως Facebook και
  • Η τέταρτη και τελευταία μέθοδος (FaceBookPageTitleVerification) δηλώνει ότι κάντε κλικ στο εικονίδιο αναζήτησης του Google και επαληθεύστε ότι ο τίτλος του προγράμματος περιήγησης έχει αλλάξει σε Facebook - Αναζήτηση Google.

Τώρα εκτελέστε αυτόν τον κωδικό χρησιμοποιώντας το testNG, όπως φαίνεται στο βίντεο, θα διαπιστώσετε ότι όλες οι δοκιμαστικές θήκες αποτυγχάνουν. Ο λόγος για αποτυχία: καθώς υπάρχει εξάρτηση προηγούμενης δοκιμαστικής θήκης που θα περάσει, θα περάσει μόνο η τρέχουσα δοκιμαστική υπόθεση που θα τρέξει.

Σε αυτήν την περίπτωση,

  • Η πρώτη μέθοδος που εκτελείται είναι το openBrowser (). Πέρασε επειδή δεν έχει καμία εξάρτηση.
  • Η δεύτερη μέθοδος που εκτελέστηκε είναι το FaceBookPageTitleVerification (); αποτυγχάνει επειδή προσπαθούμε να κάνουμε κλικ στο κουμπί αναζήτησης και να επαληθεύσουμε τον τίτλο του προγράμματος περιήγησης.
  • Μπορείτε να δείτε ότι εάν η δραστηριότητα αναζήτησης δεν είναι διαδικασία, πώς μπορεί να περάσει οποιοδήποτε άλλο βήμα. Ως εκ τούτου, αυτός είναι ο λόγος που οι δοκιμαστικές μου περιπτώσεις αποτυγχάνουν.
PASSED: openBrowserFAILED: FaceBookPageTitleVerificationΑΠΟΘΗΚΕΥΜΕΝΟ: launchGoogleFAILED: peformSeachAndClick1stLink

Επίδειξη κώδικα TestNG χωρίς προτεραιότητα με αλφαβητική σειρά

Εάν δεν αναφέρουμε καμία προτεραιότητα, το testng θα εκτελέσει τις μεθόδους @Test με βάση την αλφαβητική σειρά των ονομάτων μεθόδων τους, ανεξάρτητα από τον τόπο εφαρμογής τους στον κώδικα.

πακέτο com.guru.testngannotations;εισαγωγή org.testng.annotations.Test;δημόσια τάξη TestNG_Priority_Anotations {@Δοκιμήδημόσιο κενό c_method () {System.out.println ("Είμαι στη μέθοδο Γ");}@Δοκιμήδημόσιο κενό b_method () {System.out.println ("Είμαι στη μέθοδο Β");}@Δοκιμήδημόσιο κενό a_method () {System.out.println ("Είμαι στη μέθοδο Α");}@Δοκιμήδημόσια άκυρη ηλεκτρονική μέθοδος () {System.out.println ("Είμαι στη μέθοδο E");}@Δοκιμήδημόσιο κενό d_method () {System.out.println ("Είμαι στη μέθοδο Δ");}}

Παραγωγή

Είμαι στη μέθοδο ΑΕίμαι στη μέθοδο ΒΕίμαι στη μέθοδο ΓΕίμαι στη μέθοδο ΔΕίμαι στη μέθοδο Ε

Αν και ορίσαμε τις μεθόδους με τυχαίο τρόπο (c, b, a, e, d), το testng εκτέλεσε τις μεθόδους με βάση τα ονόματα των μεθόδων τους λαμβάνοντας υπόψη την αλφαβητική σειρά και το ίδιο αντανακλάται και στην έξοδο.

Τρόπος ορισμού προτεραιότητας στο TestNG

Όπως είδατε στο προηγούμενο παράδειγμα ότι απαιτείται αλληλουχία για να περάσει αυτό το σενάριο, έτσι θα τροποποιήσουμε το προηγούμενο κομμάτι κώδικα με την παράμετρο προτεραιότητας , ώστε κάθε δοκιμή να αντιβαίνει στην προτεραιότητα που τους έχει ανατεθεί.

Τώρα, όπως μπορείτε να δείτε, έχουμε εκχωρήσει την προτεραιότητα σε κάθε δοκιμαστική περίπτωση σημαίνει ότι η δοκιμαστική περίπτωση θα εκτελεστεί πρώτα η χαμηλότερη τιμή προτεραιότητας.

Προτεραιότητα στο testNG σε δράση

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;εισαγωγή org.testng.Assert;εισαγωγή org.testng.annotations.Test;δημόσια τάξη Priority_In_testNG {Πρόγραμμα οδήγησης WebDriver;// Μέθοδος 1: Ανοίξτε το πρόγραμμα περιήγησης, πείτε Firefox@ Δοκιμή (προτεραιότητα = 1)public void openBrowser () {πρόγραμμα οδήγησης = νέο FirefoxDriver ();}// Μέθοδος 2: Εκκίνηση του Google.com@ Δοκιμή (προτεραιότητα = 2)δημόσια άκυρη εκκίνησηGoogle () {driver.get ("http://www.google.co.in");}// Μέθοδος 3: Εκτελέστε αναζήτηση χρησιμοποιώντας το "Facebook"@ Δοκιμή (προτεραιότητα = 3)δημόσιο κενό peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Αναζήτηση']")). sendKeys ("Facebook");}// Μέθοδος 4: Επαληθεύστε τον τίτλο της σελίδας αναζήτησης Google.@Test (προτεραιότητα = 4)public void FaceBookPageTitleVerification () ρίχνει την εξαίρεση {driver.findElement (By.xpath (".//*[@ value = 'Search']")). κάντε κλικ ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Περιέχει ("Facebook - Αναζήτηση Google"), true);}} 

Επεξήγηση του κώδικα

Αφού εκχωρήσετε προτεραιότητα σε κάθε δοκιμαστική θήκη, εκτελέστε τον παραπάνω κώδικα χρησιμοποιώντας το testNG όπως φαίνεται στο Video-2 που αναφέρεται παρακάτω.

Εδώ, μπορείτε να δείτε ότι οι δοκιμαστικές περιπτώσεις έχουν προτεραιότητα. Η δοκιμαστική θήκη με χαμηλότερη προτεραιότητα εκτελείται πρώτα, δηλαδή τώρα υπάρχει μια διαδοχική εκτέλεση σύμφωνα με την προτεραιότητα στις δοκιμαστικές περιπτώσεις. Ως εκ τούτου, όλες οι δοκιμαστικές περιπτώσεις περνούν τώρα.

Σημειώστε την κονσόλα της έκλειψης:

Έξοδος :

PASSED: openBrowserPASSED: launchGooglePASSED: peformSearchAndClick1stLinkPASSED: FaceBookPageTitleVerification

Ο αριθμός 0 έχει την υψηλότερη προτεραιότητα (θα εκτελεστεί πρώτα) και η προτεραιότητα συνεχίζεται με βάση τον δεδομένο αριθμό, δηλαδή, το 0 έχει την υψηλότερη προτεραιότητα από το 1. 1 έχει την υψηλότερη προτεραιότητα από το 2 και ούτω καθεξής.

πακέτο com.guru.testngannotations;εισαγωγή org.testng.annotations.Test;δημόσια τάξη TestNG_Priority_Anotations {@Test (προτεραιότητα = 6)δημόσιο κενό c_method () {System.out.println ("Είμαι στη μέθοδο Γ");}@ Δοκιμή (προτεραιότητα = 9)δημόσιο κενό b_method () {System.out.println ("Είμαι στη μέθοδο Β");}@ Δοκιμή (προτεραιότητα = 1)δημόσιο κενό a_method () {System.out.println ("Είμαι στη μέθοδο Α");}@ Δοκιμή (προτεραιότητα = 0)δημόσια άκυρη ηλεκτρονική μέθοδος () {System.out.println ("Είμαι στη μέθοδο E");}@ Δοκιμή (προτεραιότητα = 3)δημόσιο κενό d_method () {System.out.println ("Είμαι στη μέθοδο Δ");}}

Παραγωγή

Είμαι στη μέθοδο ΕΕίμαι στη μέθοδο ΑΕίμαι στη μέθοδο ΔΕίμαι στη μέθοδο ΓΕίμαι στη μέθοδο Β 

Εδώ έχουμε δώσει τις προτεραιότητες ως 0,1,3,6,9. Έτσι, η μέθοδος που έχει 0 ως προτεραιότητα εκτελείται πρώτα και μετά η μέθοδος με προτεραιότητα-1 και ούτω καθεξής. Εδώ το όνομα της μεθόδου αλφαβητικής παραγγελίας δεν θα ληφθεί υπόψη καθώς παρέχουμε τις προτεραιότητες

Μέθοδοι με την ίδια προτεραιότητα:

Μπορεί να υπάρχει πιθανότητα οι μέθοδοι να περιέχουν την ίδια προτεραιότητα. Σε αυτές τις περιπτώσεις, το testng λαμβάνει υπόψη την αλφαβητική σειρά των ονομάτων μεθόδου των οποίων η προτεραιότητα είναι ίδια.

πακέτο com.guru.testngannotations;εισαγωγή org.testng.annotations.Test;δημόσια τάξη TestNG_Priority_Anotations {@Test (προτεραιότητα = 6)δημόσιο κενό c_method () {System.out.println ("Είμαι στη μέθοδο Γ");}@ Δοκιμή (προτεραιότητα = 9)δημόσιο κενό b_method () {System.out.println ("Είμαι στη μέθοδο Β");}@Test (προτεραιότητα = 6)δημόσιο κενό a_method () {System.out.println ("Είμαι στη μέθοδο Α");}@ Δοκιμή (προτεραιότητα = 0)δημόσια άκυρη ηλεκτρονική μέθοδος () {System.out.println ("Είμαι στη μέθοδο E");}@ Δοκιμή (προτεραιότητα = 3)δημόσιο κενό d_method () {System.out.println ("Είμαι στη μέθοδο Δ");}}

Παραγωγή

Είμαι στη μέθοδο ΕΕίμαι στη μέθοδο ΔΕίμαι στη μέθοδο ΑΕίμαι στη μέθοδο ΓΕίμαι στη μέθοδο Β

Εδώ τα «e» και «d» εκτελούνται με βάση τις τιμές προτεραιότητας. Αλλά οι μέθοδοι «a» και «c» περιέχουν την ίδια τιμή προτεραιότητας (6). Έτσι, εδώ το testng εξετάζει την αλφαβητική σειρά των «a» και «c» και τα εκτελεί ανάλογα.

Συνδυάζοντας μεθόδους προτεραιότητας (με ίδια προτεραιότητα) και μεθόδους χωρίς προτεραιότητα:

Σε αυτήν την περίπτωση, θα καλύψουμε δύο περιπτώσεις σε μία τάξη testng.

  1. Μέθοδοι με την ίδια τιμή προτεραιότητας.
  2. Περισσότερες από μία μέθοδοι που δεν έχουν προτεραιότητα.
πακέτο com.guru.testngannotations;εισαγωγή org.testng.annotations.Test;δημόσια τάξη TestNG_Priority_Anotations {@Δοκιμή()δημόσιο κενό c_method () {System.out.println ("Είμαι στη μέθοδο Γ");}@Δοκιμή()δημόσιο κενό b_method () {System.out.println ("Είμαι στη μέθοδο Β");}@Test (προτεραιότητα = 6)δημόσιο κενό a_method () {System.out.println ("Είμαι στη μέθοδο Α");}@ Δοκιμή (προτεραιότητα = 0)δημόσια άκυρη ηλεκτρονική μέθοδος () {System.out.println ("Είμαι στη μέθοδο E");}@Test (προτεραιότητα = 6)δημόσιο κενό d_method () {System.out.println ("Είμαι στη μέθοδο Δ");}}

Παραγωγή:

Είμαι στη μέθοδο ΒΕίμαι στη μέθοδο ΓΕίμαι στη μέθοδο ΕΕίμαι στη μέθοδο ΑΕίμαι στη μέθοδο Δ 
ΕΠΙΛΟΓΗ: b_ μέθοδοςΕΠΙΛΟΓΗ: c_methodΕΠΙΛΟΓΗ: e_methodΕΠΙΛΟΓΗ: a_ μεθόδουΕΠΙΛΟΓΗ: d_method

Εξήγηση:

Πρώτη προτίμηση: Μη προτιμητέες μέθοδοι: «c» και «b»: Με βάση την αλφαβητική σειρά «b» εκτελέστηκε πρώτα και στη συνέχεια «c».

Δεύτερη προτίμηση: Μέθοδοι προτεραιότητας: 'a', 'e' και 'd': 'e' εκτελέστηκε πρώτα καθώς είχε την υψηλότερη προτεραιότητα (0). Καθώς η προτεραιότητα των μεθόδων «a» και «d» ήταν ίδια, η testng εξέτασε την αλφαβητική σειρά των ονομάτων των μεθόδων τους. Έτσι, μεταξύ τους, το «a» εκτελέστηκε πρώτα και μετά το «d».

Ευαίσθητη υπόθεση στο TestNG

Ακριβώς για ενημέρωσή σας, υπάρχει μια τυπική σύνταξη για τον ορισμό της προτεραιότητας στο testNG, δηλαδή το @Test (priority = 4) , ας υποθέσουμε ότι το ορίζετε σε κάποια άλλη σύνταξη, πείτε @Test (PRIORITY = 1), τότε το IDE σας θα το εμφανίσει ως σφάλμα σύνταξης . Ανατρέξτε στην παρακάτω εικόνα:

Συμπέρασμα:

Όπως είδατε ότι εάν υπάρχει απαίτηση για εκτέλεση ενός συνόλου δοκιμαστικής θήκης σε συγκεκριμένη ακολουθία, τότε μπορεί εύκολα να γίνει χρησιμοποιώντας την Προτεραιότητα χρησιμοποιώντας το testNG ως εργαλείο εκτέλεσης.

Αυτό το σεμινάριο έγινε εφικτό λόγω των συνεισφορών των Ramandeep Singh και Rama Krishna Gadde