TestNG Δημιουργία αναφορών σε Selenium: Πώς να δημιουργήσετε;

⚡ Έξυπνη Σύνοψη

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

  • 🔘 Προεπιλεγμένη έξοδος: Κάθε TestNG Η εκτέλεση δημιουργεί έναν φάκελο δοκιμαστικής εξόδου χωρίς επιπλέον κώδικα.
  • ☑️ Δύο προβολές HTML: Το emailable-report.html συνοψίζει τα αποτελέσματα, το index.html συνδέεται με τις λεπτομερείς προβολές.
  • ✅ Αρχεία καταγραφής αναφοράς: Η συνάρτηση Reporter.log() γράφει προσαρμοσμένα μηνύματα απευθείας στην δημιουργημένη αναφορά.
  • 🧪 Η σουίτα λειτουργεί: Η εκτέλεση του testng.xml ομαδοποιεί πολλές κλάσεις σε μία ενοποιημένη αναφορά.
  • ️ Προσαρμογή: Τα ITestListener και IReporter επέτρεψαν σε μια ομάδα να δημιουργήσει τη δική της μορφή αναφοράς.
  • 📊 Πέρα από τις προεπιλογές: Τα ExtentReports και Allure προσθέτουν γραφήματα, ιστορικό και συνημμένα στιγμιότυπων οθόνης.

TestNG δημιουργία αναφορών σε Selenium

Τι είναι TestNG Αναφορές?

TestNG Εκθέσεις είναι οι προεπιλεγμένες αναφορές HTML που δημιουργούνται μόλις εκτελεστούν οι δοκιμαστικές περιπτώσεις χρησιμοποιώντας TestNG. Αυτές οι αναφορές σάς βοηθούν να προσδιορίσετε τις πληροφορίες σχετικά με τις δοκιμαστικές περιπτώσεις και την κατάσταση ενός έργου. TestNG αναφορές στο Selenium Καταγράψτε τρία αποτελέσματα για κάθε μέθοδο δοκιμής — επιτυχία, αποτυχία και παράλειψη — ώστε να μπορείτε να ελέγχετε τα δεδομένα σχετικά με τις δοκιμαστικές περιπτώσεις με μια ματιά.

Η δημιουργία αναφορών είναι πολύ σημαντική όταν κάνετε τη δοκιμή αυτοματισμού καθώς και για τη μη αυτόματη δοκιμή.

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

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

  • The TestNG θα δημιουργήσει την προεπιλεγμένη αναφορά.
  • Όταν εκτελέσετε το αρχείο testng.xml και ανανεώσετε το έργο, θα λάβετε έναν φάκελο test-output, ο οποίος περιέχει την έξοδο αναφοράς από TestNG.
  • Κάντε δεξί κλικ στο emailable-report.html και επιλέξτε την επιλογή Άνοιγμα με το πρόγραμμα περιήγησης ιστού.

Σημείωση: η συμπεριφορά που περιγράφεται εδώ παραμένει αμετάβλητη TestNG 7.x. Κυκλοφορίες από TestNG Από την έκδοση 7.6 και μετά απαιτείται JDK 11 ή νεότερη έκδοση, επομένως ένα παλαιότερο έργο ενδέχεται να χρειάζεται αναβάθμιση του επιπέδου JDK πριν από την παραγωγή των αναφορών.

Τύποι TestNG Αναφορές στον φάκελο αποτελεσμάτων δοκιμής

Πριν ανοίξετε οποιοδήποτε μεμονωμένο αρχείο, είναι χρήσιμο να γνωρίζετε τι περιέχει στην πραγματικότητα ο φάκελος test-output. TestNG γράφει πολλά τεχνουργήματα σε κάθε εκτέλεση και το καθένα απαντά σε διαφορετική ερώτηση.

Αρχείο ή φάκελος Τι περιέχει Πότε είναι χρήσιμο
index.html Η αναφορά προορισμού που συνδέεται με τα αποτελέσματα, τις ομάδες, τους χρόνους και τις προβολές εξόδου του ανταποκριτή. Εξετάζοντας λεπτομερώς μια διαδρομή.
emailable-report.html Μία ενιαία αυτοτελής σελίδα που συνοψίζει τις μεθόδους που πέρασαν με επιτυχία, τις αποτυχημένες και τις παραλείψεις ανά κλάση. Κοινοποίηση ενός αποτελέσματος σε άτομα που δεν ανοίγουν το έργο.
testng-results.xml Η μηχανικά αναγνώσιμη XML που έχει γραφτεί από τον ενσωματωμένο αναφορέα XML, με κατάσταση και διάρκεια ανά μέθοδο. Τροφοδοσία ενός πίνακα ελέγχου ή ενός προσαρμοσμένου αναλυτή.
junitreports JUnit-μορφή αρχείων XML, ένα ανά κλάση δοκιμής. Οποιοδήποτε πρόσθετο CI που διαβάζει το JUnit μορφή αποτελέσματος.
testng-failed.xml Ένα δημιουργημένο αρχείο σουίτας που παραθέτει μόνο τις μεθόδους που απέτυχαν. Επανεκτέλεση μόνο των αποτυχιών αντί για ολόκληρη τη σουίτα.

Τα δύο αρχεία HTML είναι αυτά που ανοίγει στη συνέχεια αυτό το σεμινάριο, επομένως η παρακάτω αναλυτική παρουσίαση ξεκινά με emailable-report.html.

Πώς να δημιουργήσετε αναφορές σε Selenium

Μέθοδος-1: emailable-report.html

  1. Κάντε κλικ στην επιλογή "emailable-report.html"
  2. Κάντε κλικ στην επιλογή web browser

Το παρακάτω στιγμιότυπο οθόνης δείχνει το αρχείο emailable-report.html να ανοίγει από τον φάκελο test-output.

Επιλογή emailable-report.html μέσα στο TestNG φάκελος αποτελεσμάτων δοκιμής

Η έξοδος αναφέρεται σε TestNG η αναφορά θα έχει την παρακάτω μορφή εάν περάσουν και οι δύο τάξεις:

TestNG αναφορά μέσω email που δείχνει επιτυχώς τις εξετάσεις DemoA και DemoB

Εξετάστε το σενάριο όπου αποτυγχάνετε σκόπιμα στην δοκιμαστική περίπτωση, π.χ. την τάξη DemoB. Στη συνέχεια, μετατρέψτε και τις δύο κλάσεις σε αρχείο σουίτας testng.xml και εκτελέστε το. Τότε το αποτέλεσμα θα μοιάζει με αυτό. Θα δείξει το αποτυχημένες δοκιμαστικές περιπτώσεις.

Αυτό είναι το αποτέλεσμα για την τάξη DemoB:

Αναφορά μέσω email που επισημαίνει την σκόπιμα αποτυχημένη δοκιμαστική περίπτωση DemoB

Ομοίως, το αποτέλεσμα για το Class DemoA θα μοιάζει με αυτό:

Σειρά συνοπτικής αναφοράς με δυνατότητα email για την τάξη DemoA που πέρασε με επιτυχία

Μέθοδος-2: index.html

  1. Κάντε δεξί κλικ στο index.html από τον κατάλογο του έργου.
  2. Επιλέξτε την επιλογή άνοιγμα με την επιλογή προγράμματος περιήγησης ιστού. Θα εμφανίσει το αποτέλεσμα με την ακόλουθη σειρά.

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

Άνοιγμα index.html από τον κατάλογο έργου σε ένα πρόγραμμα περιήγησης ιστού

Το αποτέλεσμα θα μοιάζει με αυτό:

TestNG σελίδα προορισμού αναφοράς index.html που παραθέτει τις προβολές αποτελεσμάτων εκτέλεσης

Μέθοδος-3: Τάξη Ρεπόρτερ

Μαζί με αυτά TestNG μεθόδους δημιουργίας αναφοράς, μπορείτε να χρησιμοποιήσετε το αρχείο object.properties για να αποθηκεύσετε τα αρχεία καταγραφής που δημιουργούνται από το σύστημα καθώς και τα αρχεία καταγραφής που δημιουργούνται από τον χρήστη. Αλλά ένας από τους απλούστερους τρόπους αποθήκευσης πληροφοριών καταγραφής στη δοκιμή είναι η χρήση Τάξη Ρεπόρτερ.

Reporter.συνδεθείτε Selenium είναι μια τάξη παρούσα σε TestNG για Selenium αναφοράς. Παρέχει 4 διαφορετικές μεθόδους αποθήκευσης πληροφοριών καταγραφής, οι οποίες είναι:

  1. Reporter.log(String s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, int level);
  4. Reporter.log(String s, int level, Boolean logToStandardOut);

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

Παράδειγμα:

Δημιουργήστε Δύο κλάσεις όπως DemoA και DemoB και γράψτε τον παρακάτω κώδικα μέσα στις κλάσεις.

Για Class DemoA;

  • The Code για το DemoA έχει ήδη εξηγηθεί παραπάνω. Εδώ χρησιμοποιείτε μέθοδος καταγραφής της κλάσης Reporter. (Για την υλοποίηση μιας δικής σας κλάσης αναφοράς, η κλάση πρέπει να υλοποιήσει τη διεπαφή org.testng.IReporter.)
  • Η μέθοδος καταγραφής είναι μια στατική μέθοδος της κλάσης Reporter. Έτσι, έχετε πρόσβαση σε αυτήν τη μέθοδο μέσω της κλάσης Reporter.
  • Η μέθοδος καταγραφής χρησιμοποιείται για την αποθήκευση πληροφοριών καταγραφής που είναι γραμμένες μέσα στο πρόγραμμα. Εξετάζοντας τις πληροφορίες του αρχείου καταγραφής, θα καταλάβετε εύκολα πού ακριβώς σταματά η εκτέλεση του προγράμματος.

Το παρακάτω στιγμιότυπο οθόνης δείχνει τις κλήσεις Reporter.log που τοποθετούνται μέσα στην κλάση DemoA.

Δηλώσεις Reporter.log γραμμένες μέσα στην κλάση δοκιμής DemoA

Για Επίδειξη τάξης Β:

Δηλώσεις Reporter.log γραμμένες μέσα στην κλάση δοκιμών DemoB

  • Τώρα, Δημιουργήστε το αρχείο testng.xml επιλέγοντας αυτές τις δύο κλάσεις και
  • Επιλέξτε εκτέλεση ως και
  • Κάντε κλικ στη μετατροπή σε δοκιμή.
  • Στη συνέχεια, εκτελέστε αυτό το αρχείο testng.xml επιλέγοντας run as και επιλέξτε testng suite.
  • Στη συνέχεια, ανανεώστε το έργο, ανοίξτε το φάκελο δοκιμαστικής εξόδου.
  1. Στο φάκελο test-output, ανοίξτε το emailable-report.html. Θα μοιάζει με:

    Αναφορά μέσω email που δημιουργήθηκε μετά την εκτέλεση της σουίτας testng.xml των DemoA και DemoB

    Ομοίως, θα έχετε επίσης ένα έργο Έξοδος για Επίδειξη Β.

  2. Στον φάκελο test-output, ανοίξτε το index.html. Θα μοιάζει με:

    Η αναφορά index.html δημιουργήθηκε μετά την εκτέλεση της σουίτας testng.xml

Κάντε κλικ στην έξοδο του ρεπόρτερ. Θα ανοίξει τις πληροφορίες καταγραφής ό,τι γράφεται στις μεθόδους δοκιμής.

TestNG προβολή εξόδου αναφοράς που παραθέτει τα μηνύματα που καταγράφηκαν από τις μεθόδους δοκιμής

Κάντε κλικ στους Times. Θα δείξει πόσο χρόνο χρειάστηκε για την εκτέλεση της μεθόδου δοκιμής που υπάρχει στην τάξη χρησιμοποιώντας TestNG εργαλεία αναφοράς.

TestNG Προβολή χρόνου που δείχνει πόσο χρόνο χρειάστηκε για να εκτελεστεί κάθε μέθοδος δοκιμής

Πώς να προσαρμόσετε TestNG Αναφορές με ITestListener και IReporter

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

  • ITestListener ειδοποιείται σε πραγματικό χρόνο, καθώς κάθε δοκιμή ξεκινά, επιτυγχάνει, αποτυγχάνει ή παραλείπεται. Χρησιμοποιήστε το όταν οι πληροφορίες πρέπει να καταγραφούν τη στιγμή που συμβαίνει το συμβάν — για παράδειγμα, ένα στιγμιότυπο οθόνης σε περίπτωση αποτυχίας.
  • IReporter ειδοποιείται μία φορά, αφού ολοκληρωθεί κάθε σουίτα, και λαμβάνει αντικείμενα που περιγράφουν ολόκληρη την εκτέλεση. Χρησιμοποιήστε το όταν το αποτέλεσμα είναι ένα ολοκληρωμένο έγγραφο, όπως ένα PDF ή μια προσαρμοσμένη σελίδα HTML.

Ένας ακροατής που εισάγει κάθε αποτέλεσμα στην αναφορά μέσω της κλάσης Reporter μοιάζει με αυτό.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

Η εγγραφή του listener γίνεται στο ίδιο αρχείο testng.xml suite που έχετε ήδη δημιουργήσει για τα DemoA και DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Δύο διακόπτες γραμμής εντολών αξίζει να γνωρίζετε ενώ πειραματίζεστε. -d η επιλογή αλλάζει τον κατάλογο στον οποίο γράφονται οι αναφορές και -usedefaultlisteners ψευδές απενεργοποιεί τους ενσωματωμένους δημοσιογράφους έτσι ώστε να εκτελείται μόνο ο δικός σας ακροατής. Και οι δύο περιγράφονται στην επίσημη TestNG καταγραφή και τεκμηρίωση αποτελεσμάτων, το οποίο επίσης καταγράφει τις ιδιότητες που γίνονται δεκτές από τον ενσωματωμένο αναφορέα XML.

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

TestNG Προεπιλεγμένες αναφορές έναντι ExtentReports έναντι Allure

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

Ικανότητα TestNG αθέτηση ExtentReports Έκθεση Allure
Προσπάθεια εγκατάστασης Κανένα — παράγεται αυτόματα Προσθέστε τη βιβλιοθήκη και γράψτε τον κώδικα αναφοράς Προσθέστε τον προσαρμογέα και, στη συνέχεια, δημιουργήστε την αναφορά από τα αποτελέσματα
Γραφήματα και πίνακες ελέγχου Οχι Ναι Ναι
Στιγμιότυπα Μόνο μέσω της σήμανσης Reporter.log Ενσωματωμένο API συνημμένων Ενσωματωμένο API συνημμένων
Ιστορικό εκτέλεσης και τάσεις Οχι Μέσω του προαιρετικού στοιχείου διακομιστή Ναι, από αποθηκευμένα προηγούμενα αποτελέσματα
Κάλυψη πλαισίου TestNG αποκλειστικά Java και .NET Αγνωστικιστικό πλαίσιο

Ξεκινήστε με τις προεπιλεγμένες αναφορές όσο η σουίτα είναι μικρή. Μεταβείτε σε ExtentReports όταν τα ενδιαφερόμενα μέρη ζητούν ευανάγνωστους πίνακες ελέγχου και να Έκθεση Allure όταν το ιστορικό ασταθών δοκιμών σε όλες τις κατασκευές γίνεται το ερώτημα που έχει σημασία. Όποια και αν επιλέξετε, η αναφορά δημοσιεύεται συνήθως από την εργασία κατασκευής, η οποία καλύπτεται στο Jenkins συνεχή ολοκλήρωση tutorial.

Συχνές Ερωτήσεις

Ο φάκελος εμφανίζεται μόνο μετά TestNG ολοκληρώνεται μια εκτέλεση και το έργο ανανεώνεται στο IDE. Ένας κενός φάκελος συνήθως σημαίνει ότι η κλάση ξεκίνησε ως απλή Java εφαρμογή ή οι προεπιλεγμένοι ακροατές ήταν απενεργοποιημένοι, επομένως κανένας δημοσιογράφος δεν εκτέλεσε ποτέ την εργασία του.

Ναί. TestNG γράφει στην έξοδο test από προεπιλογή. Περάστε την επιλογή -d στη γραμμή εντολών ή ορίστε τον κατάλογο εξόδου στη διαμόρφωση εκτέλεσης IDE ή στις ρυθμίσεις του Maven Surefire που εκκινούν τη σουίτα.

Καταγράψτε την εικόνα μέσα σε μια μέθοδο listener όπως η onTestFailure, αποθηκεύστε το αρχείο δίπλα στην αναφορά και, στη συνέχεια, γράψτε μια ετικέτα εικόνας HTML μέσω του Reporter.log. Η αναφορά αποδίδει την μορφοποίηση, επομένως η εικόνα εμφανίζεται δίπλα στη μέθοδο που απέτυχε.

TestNG το ίδιο δεν στέλνει email. Οι ομάδες συνήθως επισυνάπτουν emailable-report.html από μια εργασία δημιουργίας, για παράδειγμα ένα Jenkins βήμα email μετά τη δημιουργία ή προσθέστε μια μικρή ρουτίνα αλληλογραφίας μέσα σε μια υλοποίηση του IReporter.

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

GitHub Copilot μπορεί να δημιουργήσει υποστυλώματα για κλάσεις listener, εντολές Reporter.log και καταχωρήσεις testng.xml από ένα σύντομο σχόλιο. Revδείτε κάθε πρόταση, επειδή οι δημιουργημένοι ακροατές συχνά χάνουν τις ακριβείς μεθόδους διεπαφής TestNG αναμένει.

Μόλις συνδεθεί ένα IRetryAnalyzer, κάθε επανάληψη καταγράφεται μαζί με το τελικό αποτέλεσμα. Η προεπιλεγμένη αναφορά επομένως εμφανίζει κάθε προσπάθεια, επομένως μια ασταθής δοκιμή μπορεί να εμφανιστεί τόσο ως αποτυχία όσο και ως επιτυχία στην ίδια εκτέλεση.

Δώστε την εντολή -usedefaultlisteners false στη γραμμή εντολών ή ορίστε την τιμή useDefaultListeners σε false στη διαμόρφωση Maven Surefire ή Ant. Μόνο οι reporters που καταχωρείτε ρητά εκτελούνται στη συνέχεια, γεγονός που μειώνει την εκτέλεση για πολύ μεγάλες σουίτες.

Συνοψίστε αυτήν την ανάρτηση με: