מבוא
במאמר זה, אסקור את היכולת להוסיף נתוני בקרת גרסאות Git לדוח אוטומציית הבדיקות שלנו.
הכלים הטכנולוגיים המשמשים למימוש הפתרון הם:
שפת תכנות: Python
מנוע בדיקות: pytest
תשתית דוחות: Allure
קישור לפרויקט שפותח יחד עם אליאס שורוש.
לפעמים בדיקות שעוברות הופכות ללא יציבות (flaky), זה יכול לקרות מסיבות רבות:
- גרסת המוצר השתנתה.
- גרסת האוטומציה השתנתה.
- שינויים הקשורים למערכת הנבדקת
- בעיות סנכרון בדיקות.
יש, כמובן, סיבות נוספות, ואנו זקוקים לדרך להכניס את כל המידע הרלוונטי למערכת הדיווח שלנו כדי לנפות שגיאות בסיבות אלו, וחלק חשוב מהפאזל הוא נתוני בקרת הגרסאות שלנו.
הפתרון – הוספת נתוני בקרת גרסאות לדוח Allure
סקירת מסגרת הדיווח Allure
ראשית, בואו נסקור את מסגרת Allure. הנה הדגמה של יכולות המסגרת: https://demo.qameta.io/allure/
מדוע בחרנו ב-Allure?
- חינמי וקוד פתוח.
- יכולת לצרף סוגי קבצים שונים (תמונות, קבצי נתונים וכו’) למקרי הבדיקה בהתאם לצרכינו.
- צירוף קישורים למקרי בדיקה (לדוגמה, מקרי בדיקה רלוונטיים ב-Jira).
- אינו דורש ניהול אובייקט הדוח – בניגוד למסגרות בדיקה אחרות.
- תוספים מובנים ל-GitHub Actions ו-Jenkins.
- הדוח מחלץ את הנתונים שהועברו לשלבי הבדיקה ומציג אותם בדוח.
- אפשרות להגדיר רמות חומרה למקרי בדיקה ולסנן תוצאות על בסיס חומרה – זה מוסיף שכבה נוספת המסייעת לאבחן במהירות את תוצאות הבדיקה שלנו.
- יכולת מובנת לנתח את סוג הכשל – בין אם זו שגיאת זמן ריצה או כשל אמיתי שהתרחש כתוצאה מ-Assert.
התכונה שבה נשתמש במאמר זה כדי להוסיף את נתוני בקרת הגרסאות שלנו היא היכולת להוסיף מידע סביבתי לדוח.
מימוש הפתרון
class AllureEnvironmentParser:
""" Writes environment variables into allure environment file"""
def __init__(self, file_name):
self.file_path = os.path.join(dir_global.ALLURE_RESULTS_PATH, file_name)
def write_to_allure_env(self, dic):
with open(self.file_path, 'w+') as f:
for key in dic:
f.write(f'{key}={dic[key]}' + "\n")
חלק זה מורכב ממחלקת AllureEnvironmentParser, שיש לה את השיטה write_to_allure_env
. בנאי מציין את שם הקובץ של קובץ ה-XML שיכיל את הנתונים לכתיבה. הוא כותב זוגות מפתח-ערך המופרדים על ידי שורות חדשות ממילון לקובץ XML.
@fixture(autouse=True, scope="session")
def write_allure_environment(prep_properties):
yield
repo = Repo(ROOT_DIR)
env_parser = AllureEnvironmentParser("environment.properties")
env_parser.write_to_allure_env(
{
"Browser": driver.name,
"Driver_Version": driver.capabilities['browserVersion'],
"Base_URL": base_url,
"Commit_Date": datetime.fromtimestamp(repo.head.commit.committed_date).strftime('%c'),
"Commit_Message": repo.head.commit.message.strip(),
"Commit_Id": repo.head.object.hexsha,
"Commit_Author_Name": repo.head.commit.author.name,
"Branch": repo.active_branch.name
})
שנית,
ה-fixture write_allure_environment
משתמש בספריית GitPython
כדי לגשת למידע פרוייקט Git ולכתוב אותו לקובץ ה-XML.
מחלקת AllureEnvironmentParser כותבת מידע על הקומיט הנוכחי,
כגון מזהה קומיט, שם מחבר, הודעת קומיט ותאריך קומיט, לקובץ ה-XML.
זאת לאחר ש-fixtures אחרים סיימו את ביצועם.
בנוסף, היא מצרפת את גרסת הדפדף, כתובת ה-URL הבסיסית ושם הענף הפעיל לקובץ ה-XML.
תוצאת ההרצה בדוח שנוצר ממוקמת תחת סעיף הסביבה:
לסיכום
במאמר זה, סקרנו את הבעיה שעמדנו בפניה כאשר נזקקנו לנפות שגיאות בבדיקות כושלות ולא ידענו את נתוני בקרת הגרסאות של קוד האוטומציה שלנו, ולאחר מכן יישמנו פתרון להוספת נתוני בקרת הגרסאות ישירות למסגרת הדיווח שלנו.
בדיקות מהנות!