✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

הטמעת דו"חות ריצה באוטומציה עם Allure Reporter

הטמעת דו"חות ריצה באוטומציה עם Allure Reporter
תומר כהן
|
קלה
|
Apr 30, 2019
alt="facebook"alt="linkedin"להרשמה לניוזלטר

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


במאמר זה אדבר על החשיבות של הוספת Reporter לתשתית האוטומציה, ואציג דוגמה של החיבור בין תשתית האוטומציה לדו"ח סוף הריצה עם Allure ו-pytest. הממשק והיכולות שאפשר לקבל מ-Allure עצומים, ולכן אציג כאן את הבסיס ממנו כדאי להתחיל וכבר יהווה חלק גדול בהבנת התרחישים.


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


דרישות קדם: היכרות עם pytest


אז קודם כל, מה זה Reporter ואיך הוא עוזר לנו?


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


יצירת הדו”ח הראשון שלנו


התקנות נדרשות:


תחילה נתקין את חבילת allure-pytest דרך pip באמצעות שורת הפקודה -
                                                               python -m pip install allure-pytest


הספרייה allure-pytest תנהל עבורנו את ההתממשקות בין pytest ל-Allure ותעזור לנו לייצר דו”ח המכיל את פרטי הריצה (ועוד פרטים נוספים שהוספו על ידינו) בפורמט json ש-allure commandline יידע לקרוא ולהפוך לדו”ח של ממש.


כעת נתקין את allure-commandline - הסבר להתקנה לפי מערכת הפעלה


הכלי allure commandline יעזור לנו בהפיכת קבצי ה-json שנוצרו באמצעות pytest לדו”ח html של ממש.


שתי הפקודות העיקריות שהוא מכיל הן - serve (יצירת דו”ח ופתיחתו למשתמש) ו- generate (יצירת דו”ח ושמירתו בתיקייה).


• לצורך התקנת עבודה עם allure commandline, נדרשת התקנה של java והוספתה למשתני הסביבה
• גם את הנתיב ל-allure commandline מומלץ לשים במשתני הסביבה

כתיבת התרחיש:


לאחר שחבילת allure-pytest הותקנה, נכתוב שני תרחישי בדיקה עם pytest

(לצורך הדוגמה)
def test_going_to_fail():
   my_first_var = 2
   my_second_var = 4

   assert my_first_var == my_second_var
def test_going_to_pass():
   my_first_var = 2
   my_second_var = 2

   assert my_first_var == my_second_var


הרצת התרחיש:


אז יש לנו שני תרחישים אשר ניתנים להרצה עם pytest, ועכשיו על מנת לשלב בין pytest ל-allure, נריץ את התרחיש ב-pytest עם flag אשר יציין היכן לשים את תוצאות הריצה.


                                                                   pytest --alluredir=report


במקרה הזה, report זו תיקייה לדוגמה, ותוצאות הריצה יירשמו לתוך התיקיה report אשר תיווצר בתוך התיקיה בה נמצא קובץ הבדיקות.


יצירת הדו”ח:


כל מה שנשאר לעשות זה רק לייצר את הדו”ח באמצעות allure commandline באופן הבא:


נקליד בשורת הפקודה - allure serve report (במקום המילה report יש להכניס את הנתיב לתיקייה שמכילה את תוצאות הריצה).



צפייה בדו”ח:


עתה אמור להיפתח דפדפן עם תוצאות הריצה מוכלות בתוכו


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


עיבוי התרחיש:


מכאן יש רשימה גדולה וארוכה של יכולות שאפשר להוסיף על מנת לקבל יותר מידע בדו”ח הריצה.


דוגמה טובה תהיה הוספת steps לריצה שלנו באופן הבא:


@allure.step('adding two numbers {0} and {1}')
def add(num1, num2):
   return num1+num2

def test_detailed_scenario():
   my_first_var = 2
   my_second_var = 2
   
   result = add(my_first_var, my_second_var)
   
       assert result == 4


ולאחר הרצה חוזרת באמצעות pytest ויצירת הדו”ח עם Allure, נוכל לראות הפעם מעט יותר פירוט בתוכן תרחיש הבדיקה:



סיכום


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


את הפירוט המלא על היכולות ניתן לראות בדוקומנטציה.


בנוסף, חשוב להבהיר ששימוש לקוי עלול להוביל לסיבוך בקוד ואף לאי קריאה שלו, ולכן גם כשמוסיפים לוגים ודו”חות לקוד שלנו, חשוב לשמור על עקרו


מאת: תומר כהן, מומחה לפיתוח תוכנה ואוטומציה

רוצים להתעדכן בתכנים נוספים בנושאי ענן וטכנולוגיות מתקדמות? הירשמו עכשיו לניוזלטר שלנו ותמיד תישארו בעניינים < להרשמה

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


במאמר זה אדבר על החשיבות של הוספת Reporter לתשתית האוטומציה, ואציג דוגמה של החיבור בין תשתית האוטומציה לדו"ח סוף הריצה עם Allure ו-pytest. הממשק והיכולות שאפשר לקבל מ-Allure עצומים, ולכן אציג כאן את הבסיס ממנו כדאי להתחיל וכבר יהווה חלק גדול בהבנת התרחישים.


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


דרישות קדם: היכרות עם pytest


אז קודם כל, מה זה Reporter ואיך הוא עוזר לנו?


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


יצירת הדו”ח הראשון שלנו


התקנות נדרשות:


תחילה נתקין את חבילת allure-pytest דרך pip באמצעות שורת הפקודה -
                                                               python -m pip install allure-pytest


הספרייה allure-pytest תנהל עבורנו את ההתממשקות בין pytest ל-Allure ותעזור לנו לייצר דו”ח המכיל את פרטי הריצה (ועוד פרטים נוספים שהוספו על ידינו) בפורמט json ש-allure commandline יידע לקרוא ולהפוך לדו”ח של ממש.


כעת נתקין את allure-commandline - הסבר להתקנה לפי מערכת הפעלה


הכלי allure commandline יעזור לנו בהפיכת קבצי ה-json שנוצרו באמצעות pytest לדו”ח html של ממש.


שתי הפקודות העיקריות שהוא מכיל הן - serve (יצירת דו”ח ופתיחתו למשתמש) ו- generate (יצירת דו”ח ושמירתו בתיקייה).


• לצורך התקנת עבודה עם allure commandline, נדרשת התקנה של java והוספתה למשתני הסביבה
• גם את הנתיב ל-allure commandline מומלץ לשים במשתני הסביבה

כתיבת התרחיש:


לאחר שחבילת allure-pytest הותקנה, נכתוב שני תרחישי בדיקה עם pytest

(לצורך הדוגמה)
def test_going_to_fail():
   my_first_var = 2
   my_second_var = 4

   assert my_first_var == my_second_var
def test_going_to_pass():
   my_first_var = 2
   my_second_var = 2

   assert my_first_var == my_second_var


הרצת התרחיש:


אז יש לנו שני תרחישים אשר ניתנים להרצה עם pytest, ועכשיו על מנת לשלב בין pytest ל-allure, נריץ את התרחיש ב-pytest עם flag אשר יציין היכן לשים את תוצאות הריצה.


                                                                   pytest --alluredir=report


במקרה הזה, report זו תיקייה לדוגמה, ותוצאות הריצה יירשמו לתוך התיקיה report אשר תיווצר בתוך התיקיה בה נמצא קובץ הבדיקות.


יצירת הדו”ח:


כל מה שנשאר לעשות זה רק לייצר את הדו”ח באמצעות allure commandline באופן הבא:


נקליד בשורת הפקודה - allure serve report (במקום המילה report יש להכניס את הנתיב לתיקייה שמכילה את תוצאות הריצה).



צפייה בדו”ח:


עתה אמור להיפתח דפדפן עם תוצאות הריצה מוכלות בתוכו


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


עיבוי התרחיש:


מכאן יש רשימה גדולה וארוכה של יכולות שאפשר להוסיף על מנת לקבל יותר מידע בדו”ח הריצה.


דוגמה טובה תהיה הוספת steps לריצה שלנו באופן הבא:


@allure.step('adding two numbers {0} and {1}')
def add(num1, num2):
   return num1+num2

def test_detailed_scenario():
   my_first_var = 2
   my_second_var = 2
   
   result = add(my_first_var, my_second_var)
   
       assert result == 4


ולאחר הרצה חוזרת באמצעות pytest ויצירת הדו”ח עם Allure, נוכל לראות הפעם מעט יותר פירוט בתוכן תרחיש הבדיקה:



סיכום


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


את הפירוט המלא על היכולות ניתן לראות בדוקומנטציה.


בנוסף, חשוב להבהיר ששימוש לקוי עלול להוביל לסיבוך בקוד ואף לאי קריאה שלו, ולכן גם כשמוסיפים לוגים ודו”חות לקוד שלנו, חשוב לשמור על עקרו


מאת: תומר כהן, מומחה לפיתוח תוכנה ואוטומציה

רוצים להתעדכן בתכנים נוספים בנושאי ענן וטכנולוגיות מתקדמות? הירשמו עכשיו לניוזלטר שלנו ותמיד תישארו בעניינים < להרשמה

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
תומר כהן
בואו נעבוד ביחד
support@israelclouds.com
צרו קשר