הפשטות של Python הופכת אותה לאחת משפות התכנות הטובות ביותר לכתיבת מבחנים אוטומטיים. השפה מציעה כמה מסגרות לבדיקת תוכנה שיעזרו לך לבדוק בצורה יעילה יותר.
בין אם אתה עומד למבחן מקצה לקצה, בדיקות עומס ולחץ, או יותר, אלו הן מסגרות בדיקות התוכנה הטובות ביותר מבוססות Python.
1. Pytest
Pytest היא מסגרת בדיקה פשוטה שנכתבה ב- Python ועבור Python. למה כדאי להשתמש בו לבדיקה? יש לו עקומת למידה קלה ומהווה מסגרת מתאימה לבדיקת יחידות ואינטגרציה. זה גם תומך בירושה מחלקה מ-unittest.
אחת הנקודות החזקות של המסגרת היא שהיא מספקת דרך נקייה וקצרה יותר לכתיבת מבחנים בפייתון. לדוגמה, אימות פלט קוד הוא פשוט כמו קריאה ל-an לִטעוֹן מילת מפתח. אם אתה רוצה להריץ מספר בדיקות בו-זמנית, Pytest חוסך זמן עם תכונת הבדיקה המקבילה חסרת הראש שלה.
Pytest תומך גם בביצוע שורת פקודה של חבילות בדיקה. זה פשוט כמו להפעיל את פקודת pytest ממסוף תיקיית הבדיקה. אתה לא צריך להתעסק בקובצי הבדיקה, מכיוון שהמסגרת מזהה אותם באופן אוטומטי.
עם זאת, הפקודה עובדת גם עם הצהרת קבצים. אז אתה יכול גם להפעיל את Pytest עם שם קובץ:
pytestpatter_tests.py
הפעלת קובץ בדיקה עם Pytest מייצרת פלט ידידותי לאדם שעוקב אחר שלבי הבדיקה ואומר לך היכן טמונה התקלה:
2. מַחֲזַאִי
מסגרת המחזאי היא ההצעה של מיקרוסופט לקהילת בודקי התוכנה. בעוד שמסגרות רבות פועלות בדיקות ללא ראש בלבד, Playright תומכת הן במצב חסר ראש והן במצב ראש. זוהי אחת המסגרות הטובות ביותר לבדיקת ממשק המשתמש, עם תמיכה בדפדפנים מבוססי Firefox ו-Chromium כמו Edge וכרום.
מבחינה תכונה, מחזאית קרובה לסלניום. זה תואם את האחרון עבור כלי בדיקות ותזמור מקבילים מבוססי ענן. אבל הוא מנצח את סלניום עם פונקציונליות בדיקת ה-API שלו. עם זאת, הבדיקות המקבילות של מחזאית עשויות להיות מסובכות - מכיוון שלולאת האירועים שלה מפעילה יכולת בדיקה בודדת בלבד כברירת מחדל. עם זאת, אתה יכול למצוא את הדרך שלך לעקוף את זה עם שימוש מתאים בלולאות Python.
אם אתה רוצה לעבור ללא קוד, אתה יכול להשתמש בקודגן של Playwright כדי לכתוב קוד בדיקה באופן דינמי. זה יוצר קובץ בדיקה ספציפי לשפה תוך כדי אינטראקציה עם ה-DOM. מחולל הבורר שלו גם מאפשר לך לבחור רכיבי אינטרנט בקלות רק על ידי ריחוף מעליהם ללא הכאב של בדיקת ה-DOM.
למחזמר יש ברירת מחדל להמתנה אוטומטית. לפיכך, הוא מושהה לטעינת ה-DOM לפני הפעלת מקרי בדיקה. נכון לכתיבת שורות אלו, המסגרת של המחזאי תומכת ב-JavaScript, TypeScript, Java ו-.NET בנוסף לפייתון.
3. סֵלֶנִיוּם
סלניום היא אחת ממסגרות בדיקות האוטומציה הנפוצות ביותר עם תמיכה קהילתית טובה. בניגוד ל-Playwright, הוא אינו מציע יכולת בדיקת API. אז זה לא המסגרת לבדיקת לוגיקה עורפית. אבל הוא מספק גם מנהלי התקנים של Chromium וגם לא מבוססי Chromium כדי להעריך ולאמת את ממשק המשתמש.
למסגרת יש יותר תמיכה בשפת תכנות והיא מגוונת יותר באוטומציה כללית באינטרנט. הוא גם מקבל יכולת רשת ענן לתזמור מקרי בדיקה במקביל. לפיכך, זוהי בחירה מצוינת לבדיקות חוצות דפדפנים ופלטפורמות.
לסלניום יש מערך של בוררים ייעודיים המאפשרים לך ליצור אינטראקציה עם ממשק המשתמש כמשתמש רגיל. ואם אתה צריך מנה של קביעת פעולה של ממשק משתמש, אתה יכול לרשת זאת ממחלקת unittest. לסלניום יש גם הרחבת IDE עבור Chrome ו-Firefox. זה מציע בדיקות הקלטה והפעלה. אבל בניגוד לקודן של Playwright, הוא לא מייצר קוד בדיקה.
4. רוֹבּוֹט
רובוט הוא מסגרת בדיקות Python בקוד פתוח מונעת על ידי מילות מפתח. בסך הכל, זה הופך את אוטומציית הבדיקות לקלה ככל האפשר. בעוד שאתה צריך לכתוב קוד למקרי בדיקה במסגרות אחרות, זה באנגלית פשוטה ברובוט. אז זה שימושי לכתיבת מקרי בדיקה ידידותיים יותר לאדם.
החוזק שלה הוא בדיקות קבלה - כדי לוודא שהתוכנה עומדת בקריטריונים שצוינו. מעבר לבדיקות, הוא כולל גם כלי אוטומציה רובוטיים כלליים לאוטומציה של משימות ממשק משתמש.
קל להתחיל עם מסגרת הרובוט; אתה יכול ליצור קבוצה של משימות כתובות בשפה אנושית פשוטה. לאחר מכן הכינו מקרי בדיקה עבור כל אחד מהם בקבצים נפרדים. רובוט מספק מעט פונקציונליות בדיקה, אך אתה יכול להרחיב זאת עם ספריות בדיקה אחרות. לדוגמה, אתה יכול להתאים אותו לסלניום כדי להוסיף יכולות דפדפן לבדיקות ממשק משתמש.
5. דוקטסט
Doctest היא ספריית בדיקות מובנית של Python המאפשרת לך לתעד את הקוד שלך תוך כדי בדיקה. זו אחת הבחירות הטובות ביותר לביצוע בדיקות יחידה. אבל זה גם תומך בבדיקת רכיבי ממשק משתמש. הספרייה אינטואיטיבית, קוראת מחרוזות docstrings מהקוד שלך ומאמתת את הפלט הצפוי שלך.
Doctest פועל על ידי בדיקת פונקציה מול פלט מוגדר. זה רק זורק שגיאה ומחזיר את הפלט המחושב כהלכה אם התוצאה הצפויה שלך שגויה. פלט הבדיקה ב- Doctest נקי. אם בודקים על נתוני קלט מרובים, למשל, זה נותן דוח כשל מפורט, כולל היכן הקוד נכשל.
חתיכת מבחן מתועדת של Doctest נראית כך, למשל:
defמצא ראשון(טֶקסט):
"""
בהינתן מחרוזת, לַחֲזוֹר האלפבית הראשון
:param: חוּט
>>> findFirst("אידאו")
U
"""
לַחֲזוֹרטֶקסט[0].עֶלִיוֹן()
אם __שם__=="__רָאשִׁי__":
יְבוּא דוקטורט
דוקטורט.testmod()
המבחן המתועד לעיל נכשל מכיוון שאנו מצפים ל-a U, אבל התוצאה המחושבת היא אני במקום זאת:
6. מבחן יחידה
Unittest מספקת את אחת הדרכים המובנות ביותר לכתיבת מבחני יחידה. זה תומך תכנות מונחה עצמים כברירת מחדל. הוא עוטף מקרי מבחן בשיעורים ייעודיים ומבצע אותם בלולאת אירועים. עם זאת בחשבון, unittest היא בחירה מצוינת אם אתה מעדיף לבנות את הבדיקות שלך במודל אובייקט עמוד.
Unittest לא מציעה בדיקות ממשק משתמש כברירת מחדל. אבל אתה יכול להתאים אותו למסגרת בדיקה אחרת כמו סלניום כדי לקבל יכולות דפדפן מרובות. אתה יכול גם להריץ בדיקות מקבילות עם unittest בשילוב עם מסגרות הנתמכות ברשת ענן. כך, אתה יכול למנף את כוחו באינטגרציה ובבדיקות מקצה לקצה.
בשילוב עם סלניום, למשל, אתה יכול לבדוק פלט צפוי מול תוצאה של רכיב באמצעות מילת המפתח assert בירושה. עם זאת, בניגוד ל-Pytest, סביר להניח שתכתוב יותר קוד ב-unittest מכיוון שהפעלת הטענה שלו מקודדת יותר.
7. אף 2
Nose2 קשור קשר הדוק לפייסט בפונקציונליות. עם זאת, הוא יורש את תכונות הליבה שלו ממסגרת unittest. כמו Pytest, אתה יכול להשתמש בו כרץ מבחן למקרי בדיקה שנכתבו במסגרות אחרות כמו Selenium או unittest.
זה תומך גם בבדיקות יחידה וגם בבדיקות אינטגרציה. אז בין אם אתה רוצה לבדוק את ממשק המשתמש או לבדוק את פונקציות הקוד שלך, Nose2 מספק את כל כלי השירות הדרושים.
זה גם מקבל בדיקות פרמטריות. זה כרוך בהכנסת פרמטרי בדיקה כמו דפדפני בדיקה ופלטפורמות בתוך מעצב. לאחר מכן תוכל לגשת לכל פרמטר בתוך גוף הקוד. זה הופך את Nose2 לאחת המסגרות הטובות ביותר להפעלת בדיקות חוצות דפדפנים במקביל על גבי רשתות ענן.
בדוק את התוכנית שלך ושחרר תוכנת איכות
בדיקה היא תרגול טוב בתכנות שעוזר לך לזהות ולהסיר באגים לפני פרסום פומבי. בעוד שמסגרות בדיקה מסוימות מבוססות בעיקר על Python, אחרות תומכות בשפות תכנות מרובות.
למרות שעדיף לשמור בדיקות יחידה לשפת הפיתוח שלך, יכול להיות יותר עצמאי בשפה. אל תהסס להשתמש בכל אחת ממסגרות הבדיקה הללו של Python בהתאם.