הקדמה
באוטומציה של אתרי אינטרנט, כתובת ה-URL הבסיסית היא הבסיס לכל אינטראקציה ברשת. היא מפנה את הבדיקות שלכם לסביבה הנכונה (פיתוח, בדיקות, ייצור).
אך כתובות URL סטטיות, המקודדות ישירות בבדיקות, הופכות שבירות בעת שינויי פריסה, שינויי סביבה ועדכוני כתובות URL, מה שמוביל לכשל בבדיקות ולתחזוקת קוד מיותרת.
במאמר זה, אסביר כיצד להשתמש בכתובות URL בסיסיות דינמיות עם Selenium ו-Playwright Python באמצעות GitHub Actions.
מהם GitHub Actions?
לפי מאמר זה:
GitHub Actions הוא API של סיבה ותוצאה ב-GitHub: תזמנו כל זרימת עבודה, המבוססת על כל אירוע, בזמן ש-GitHub מנהלת את הביצוע, מספקת משוב עשיר ומאבטחת כל שלב בדרך. עם GitHub Actions, זרימות עבודה ושלבים הם פשוט קוד בפרוייקט, כך שתוכלו ליצור, לשתף, לעשות שימוש חוזר ולהסתעף משיטות פיתוח התוכנה שלכם.
GitHub Actions הם בחינם ותומכים בפרוייקטים ציבוריים. המאמר יודגם באמצעות הפרוייקט הציבורי שלי, המכיל חבילת בדיקות E2E הכתובות בפייתון.
יישום הפתרון
אנו עובדים עם pytest, שהיא סביבת בדיקות פופולרית עבור פייתון.
ומשתמשים בתוסף pytest-base-url.
אנו מגדירים את כתובת ה-URL הבסיסית בקובץ pyproject.toml
תחת הסעיף [tool.pytest.ini_options]
המשמש להגדרת אפשרויות pytest.
Selenium
def pytest_runtest_setup(item: Item) -> None:
base_url = item.config.getoption("base_url")
driver.get(base_url)
הנה פירוט של קוד ה-pytest Selenium המשתמש בתוסף ה-base URL:
1. Fixture Hook:
- זה מגדיר פונקציית fixture בשם
pytest_runtest_setup
. זוהי פונקציית hook מיוחדת הנקראת אוטומטית על ידי pytest לפני כל הרצת בדיקה. היא מקבלת אובייקטitem
, המייצג את פריט הבדיקה המבוצע כעת.
2. אחזור כתובת URL בסיסית:
- שורה זו מאחזרת את הערך של האפשרות
base_url
מתצורת pytest. האפשרות משתמשת בתצורת כתובת ה-URL הבסיסית מ-pyproject.toml
.
3. ניווט לכתובת URL בסיסית:
- שורה זו מורה ל-Selenium WebDriver (בהנחה שהוא כבר אותחל והוקצה למשתנה
driver
) לנווט ל-base_url
שאוחזר. זה טוען ביעילות את דף האינטרנט הנבדק לפני כל ביצוע מקרה בדיקה.
קישור לפרויקט - עם דוגמאות קוד מלאות.
Playwright
@pytest.fixture(scope="function", autouse=True)
def goto(page: Page):
page.goto("")
התוסף מזריק את ערך כתובת ה-URL הבסיסית לסביבת הבדיקה או ל-fixtures. כעת השתמשו בכתובת ה-URL הבסיסית שסופקה על ידי התוסף, מה שמבטיח ניווט לסביבה המתאימה.
קישור לפרויקט - עם דוגמאות קוד מלאות.
GitHub Actions
אנו מגדירים משתנה פרוייקט בשם BASE_URL
בכתובת https://github.com/{owner}/{repo}/settings/variables/actions
{owner}
: זה מייצג את שם המשתמש שבבעלותו פרוייקט ה-GitHub שבו אתם מגדירים את המשתנה.
{repo}
: זה מתייחס לשם הפרוייקט עצמו.
השימוש בזרימת העבודה של GitHub Actions:
pytest --base-url ${{ vars.BASE_URL }}
הפקודה שסופקה מפעילה בדיקות בתוך זרימות העבודה שלנו ב-Selenium ו-GitHub Actions באמצעות pytest. הנה פירוט:
--base-url ${{ vars.BASE_URL }}
: אפשרות זו ממנפת כתובת URL בסיסית דינמית, המאוחסנת במשתנה של זרימת העבודה בשם BASE_URL
. התחביר ${{ vars.BASE_URL }}
מאחזר את ערך המשתנה ומזריק אותו לפקודה.
אנו יכולים לשנות את כתובת ה-URL הבסיסית בממשק המשתמש של GitHub - או שאנו יכולים להשתמש ב-API של GitHub.
קבלת BASE_URL
באופן תכנותי - דוגמה ב-Postman:
עדכון BASE_URL
באופן תכנותי - דוגמה ב-Postman:
לסיכום
פירקנו את המושג של כתובות URL בסיסיות, את תפקידן החיוני באוטומציית בדיקות, וכיצד לנהל אותן ביעילות. חקרנו את השימוש בהן ב-Selenium ו-Playwright Python, תוך מינוף התוסף pytest-base-url
לתצורה יעילה.
יתר על כן, התעמקנו בשילוב כתובות URL בסיסיות דינמיות בתוך זרימות עבודה של GitHub Actions. על ידי אחסונן כמשתני פרוייקט, אתם משיגים שליטה מרכזית ומאפשרים בדיקות ספציפיות לסביבה (פיתוח/בדיקות) הן דרך ממשק המשתמש והן דרך ה-API החזק של GitHub.
זכרו, כתובות URL בסיסיות דינמיות מעצימות אוטומציית בדיקות גמישה, ניתנת לתחזוקה ואמינה - אבן יסוד באיכות התוכנה. אמצו את הפוטנציאל שלהן ושדרגו את שיטות הבדיקה שלכם!
קריאה נוספת על תכונות GitHub Actions ניתן למצוא בקישור זה.
בדיקות מהנות!