דלג לתוכן
חזור

אוטומציית בדיקות - כיצד להציג את שם הבדיקה הנוכחית לפני כל בדיקה

פורסם:

הקדמה

במאמר זה, אסקור את היישום של מתודה שתקפיץ את שם הבדיקה שלנו בחלון חדש. נשתמש גם ב-test listener כדי לחזור על התנהגות זו עבור כל בדיקה.

שפות תכנות: Java

סביבת אוטומציה: Selenium

סביבת בדיקות: TestNG

למה שנרצה לראות את שם הבדיקה הנוכחית?

נוכל להסתכל על ממשק המשתמש ולדעת בדיוק איזו בדיקה רצה כרגע במקום לנחש או להצטרך לשים נקודת עצירה (breakpoint) כדי לגלות.

יישום הפתרון

עלינו ליצור מחלקת listener שמממשת את המחלקה TestListenerAdapter. מחלקה זו צריכה להכיל את המתודה הבאה:

public void showTestName(ITestResult result, int seconds)
{
    Object driver = result.getTestContext().getAttribute("WebDriver");
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("""
        var testWindow = window.open('', '', 'width=100,height=100')
        testWindow.document.write('<u>Test Name is:</u> ' + arguments[0])
        testWindow.focus()
        setTimeout(() => testWindow.close(), arguments[1]*1000)
        """, result.getMethod().getMethodName(), seconds);
}

במתודה זו אני משתמש בבלוקי טקסט של Java 13, תכונה זו מוסברת בפירוט במאמר זה.

המתודה מבצעת את הפעולות הבאות:

  1. אחזור מופע ה-WebDriver הנוכחי.
  2. המרת אובייקט ה-driver ל-JavaScriptExecutor - ממשק שעוזר להריץ JavaScript דרך Selenium.
  3. הרצת קוד JavaScript שפותח חלון חדש - הסקריפט מקבל שני פרמטרים, שם הבדיקה ומשך זמן קצוב בשניות עד לסגירת החלון.

כעת נשתמש בו במתודת ה-listener שרצה לפני כל בדיקה:

@Override
public void onTestStart(ITestResult result) {
    showTestName(result, 5);
}

הרצת הפתרון

יצרתי הדגמה של פתרון זה:

לסיכום

במאמר זה, סקרנו את השימוש ב-test listener ובמתודה המשתמשת ב-JavaScriptExecutor אשר יחד יוצרים את היכולת להקפיץ את שם הבדיקה עבור כל בדיקה. יכולת זו משפרת את הנראות והיכולת לנפות שגיאות (debuggability) של הבדיקה הרצה כעת.

קריאה נוספת על JavaScriptExecutor ניתן למצוא בקישור זה.

בדיקות מהנות!


הציעו שינויים

מוכנים לבנות את מפת הדרכים שלכם? נתחיל כאן


הפוסט הקודם
אוטומציית בדיקות - שיפור קריאות הקוד באמצעות שימוש ב-Enumeration
הפוסט הבא
אוטומציית בדיקות - איך לבנות תהליך CI/CD באמצעות Pytest ו-GitHub Actions