דיווח מותאם אישית עם TestNG

1. סקירה כללית

במאמר זה נדון בהפקת רישום מותאם אישית ודוחות באמצעות TestNG.

TestNG מספקת תכונת דיווח משלה - יצירת דוחות בפורמט HTML / XML. אם מבצעים בדיקות באמצעות תוסף maven-surefire, הדוח יקבל את טופס ברירת המחדל שהוגדר על ידי התוסף. מלבד דיווח מובנה, הוא מספק מנגנון להתאמה אישית קלה של מידע מחובר ודוחות שנוצרו.

אם ברצונך להתחיל ביסודות TestNG, עיין במאמר זה.

2. רישום מותאם אישית

לפני שאנחנו מיישמים רישום מותאם אישית, בואו נבדוק את יומני ברירת המחדל על ידי ביצוע מבחן mvn פקודה:

ריצות בדיקות: 11, כישלונות: 1, שגיאות: 0, דילג על: 0, זמן שחלף: 1.21 שניות <<< כישלון! - ב- TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) הזמן שחלף: 0.01 שניות <<< כשל! java.lang.AssertionError: הבדיקה נכשלה מסיבה כלשהי ב- baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) תוצאות: מבחנים נכשלו: RegistrationTest.whenCalledFromSuite_thanOK: 15 הבדיקה נכשלה בגלל סיבה כלשהי בדיקות: 11, כישלונות: 1, שגיאות: 0, דילג על: 0 [שגיאה] יש כשלים בבדיקה.

יומנים אלה אינם נותנים לנו שום מידע על סדר הביצוע, או על מתי התחילה / הושלמה בדיקה מסוימת וכו '.

אם אנו רוצים לדעת את התוצאה של כל ריצה יחד עם כמה נתונים מותאמים אישית, אנו יכולים ליישם את היומנים והדוחות שלנו. TestNG מספק דרך ליישום דוחות ורישום מותאמים אישית.

במילים פשוטות, נוכל ליישם את org.testng.ITestListener ממשק לרישום או org.testng.IReporter ממשק לדיווח. שיעורים מיושמים אלה מקבלים הודעה על אירועים כמו התחלה, סיום, כישלון וכו 'של מבחנים וסוויטות.

בואו נמשיך ונבצע רישום מותאם אישית פשוט:

מחלקה ציבורית CustomisedListener מיישמת את ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("מקרי בדיקה שהועברו"); testContext.getPassedTests (). getAllResults () .forEach (תוצאה -> {LOGGER.info (result.getName ());}); LOGGER.info ("מקרי בדיקה כושלים"); testContext.getFailedTests (). getAllResults () .forEach (תוצאה -> {LOGGER.info (result.getName ());}); LOGGER.info ("הבדיקה הושלמה בתאריך:" + testContext.getEndDate (). ToString ()); } // ...} 

שימו לב כיצד ביטלנו את onFinish () שיטה, שתופעל כאשר כל ביצועי הבדיקה הושלמו וכל התצורות נעשות. באופן דומה, אנו יכולים לעקוף שיטות אחרות - כגון onTestStart (), onTestFailure () וכו '(ומצא פרטים על שיטות אחרות אלה כאן).

עכשיו בואו נכלול את המאזין הזה בתצורת ה- XML:

לאחר הביצוע, המאזין יופעל בכל אירוע וירשם מידע תוך כדי יישום. זה עשוי להיות שימושי לצורך איתור באגים בביצוע הבדיקה שלנו.

יומני הפלט:

... פרטים CUSTOM_LOGS - Started בדיקות על: שבת 22 אפר' 14:39:43 IST 2017 INFO CUSTOM_LOGS - בדיקה: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - נבדק: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect זמן לקח: 6 ms INFO CUSTOM_LOGS - בדיקה: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - נכשל: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - PASSED TEST CASES INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - FAILED TEST CASES INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_FO: נכון

יומני ההתאמה האישית נותנים לנו מידע חסר ביומני ברירת המחדל.

3. דוחות מותאמים אישית

כאשר אנו מריצים בדיקות באמצעות התוסף, הוא מייצר דוחות בפורמטים HTML / XML ב דוחות יעד / בטחון מַדרִיך:

אם אנו רוצים להריץ חבילת בדיקה מסוימת באמצעות קובץ XML TestNG, עלינו לרשום אותה בתוסף בטוח. תְצוּרָה תָג:

   src \ test \ resources \ parametrized_testng.xml 

לאחר רישום מותאם אישית, בואו ננסה ליצור כמה דוחות מותאמים אישית שבהם אנו מיישמים את org.testng.IReporter ממשק ועקוף את להפיק דוח() שיטה:

חלל ציבורי createReport (רשימת xmlSuites, List suites, String outputDirectory) {String reportTemplate = initReportTemplate (); גוף מחרוזת = סוויטות .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); דוח מחרוזת = reportTemplate.replaceFirst ("", String.format ("% s", גוף)); saveReportTemplate (outputDirectory, דוח);}

השיטה הנדרשת לוקחת שלושה טיעונים:

  • xmlSuite - מכיל רשימה של כל הסוויטות המוזכרות בקובץ ה- XML
  • סוויטות - אובייקט רשימה, המכיל את כל המידע אודות ביצוע הבדיקה
  • ספריית פלט - נתיב הספריה בו נוצרים דוחות

השתמשנו ב- initReportTemplate () שיטה לטעינת תבנית HTML, suiteToResults () פונקציה שמפעילה את resultsToRow () פונקציה לטיפול בפנימיות הפקת הדוח:

פונקציה פרטית suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } פונקציה פרטית resultsToRows (חבילת ISuite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); הגדר failedTests = testContext.getFailedTests (). GetAllResults (); הגדר עבר טסטים = testContext.getPassedTests (). GetAllResults (); הגדר skippedTests = testContext.getSkippedTests (). GetAllResults (); מחרוזת suiteName = suite.getName (); החזר זרם. of (failedTests, עברTests, skippedTests) .flatMap (תוצאות -> createReportRows (e.getKey (), suiteName, results) .stream ()) }; }

ו saveReportTemplate () לשמירת התוצאה המלאה.

כלול את הכתב בקובץ התצורה של XML:

הנה תפוקת הדוחות שלנו:

בהשוואה לדוח ה- HTML הבטוח כברירת מחדל, דוח זה נותן תמונה ברורה וברורה של התוצאה, בטבלה אחת. שזה יותר נוח וקל לקריאה.

4. מסקנה

במדריך מהיר זה למדנו כיצד ליצור דוחות בדיקה באמצעות תוסף Surefire Maven. בדקנו גם התאמה אישית של היומנים ויצירת דוחות מותאמים אישית באמצעות TestNG. לקבלת פרטים נוספים על TestNG כמו כיצד לכתוב מקרי מבחן, סוויטות וכו 'עיין במבוא שלנו

לפרטים נוספים על TestNG, כמו למשל כיצד לכתוב מקרי מבחן, סוויטות, בהחלט התחל במאמר ההיכרות שלנו.

כמו תמיד ניתן למצוא את היישום של הקטעים ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found