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

אוטומציית בדיקות - בדיקות טרום-מיזוג עם GitHub Actions: מדריך צעד-אחר-צעד

פורסם:

הקדמה

במאמר זה, אסביר כיצד לבנות צינור בדיקות טרום-מיזוג (Pre-Merge Testing) באמצעות GitHub Actions.

הפרויקט פותח יחד עם אליאס שורוש.

קישור לפרויקט.

המחסנית הטכנולוגית ששימשה ליישום הפתרון היא:

שפת תכנות: פייתון

מסגרת בדיקות: pytest

מסגרת דיווח: Allure

מהם GitHub Actions?

לפי מאמר זה:

GitHub Actions הוא API של סיבה ותוצאה ב-GitHub: תזמרו כל זרימת עבודה, המבוססת על כל אירוע, בזמן ש-GitHub מנהלת את הביצוע, מספקת משוב עשיר ומאבטחת כל שלב בדרך. עם GitHub Actions, זרימות עבודה ושלבים הם פשוט קוד בפרוייקט, כך שתוכלו ליצור, לשתף, לעשות שימוש חוזר ולהסתעף משיטות פיתוח התוכנה שלכם.

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

החשיבות של בדיקות טרום-מיזוג

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

יישום הפתרון

עלינו ליצור תיקיית .github בשורש הפרויקט שלנו, ובתוכה ליצור תיקיית workflows. בתוכה, אנו יוצרים את זרימות העבודה שלנו שהן קבצי YAML.

github workflow

ניתן למצוא את זרימת העבודה כאן

הדרכה

אנו מריצים את זרימת העבודה על כל push או pull request לענף הראשי (main).

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

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

runs-on: ubuntu-latest

כעת סדרה של שלבי זרימת עבודה מבוצעים לפי הסדר:

- uses: actions/checkout@v2
- uses: psf/black@stable
- uses: isort/isort-action@v1
- name: Set up Python
  uses: actions/setup-python@v4
  with:
    python-version: "3.11"
- name: Install Poetry
  uses: snok/install-poetry@v1
  with:
    virtualenvs-create: true
    virtualenvs-in-project: true
    installer-parallel: true

- name: Load cached venv
  id: cached-poetry-dependencies
  uses: actions/cache@v3
  with:
    path: .venv
    key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}

- name: Install Dependencies
  run: poetry install --no-interaction --no-root
- name: Test with pytest
  run: |
    source .venv/bin/activate
    pytest --browser chrome_headless -m devRun

במקרה שלנו, זוהי בדיקה פשוטה שרק פותחת את כתובת ה-URL הבסיסית ומוודאת שאכן הגענו לשם:

@pytest.mark.devRun
def test_sanity(self, request: FixtureRequest):
                                 assert_that(self.driver.current_url).is_equal_to(
                                 request.config.getini("base_url")
                                 )

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

שאר הצינור העלה את תוצאות ה-Allure ל-GitHub Pages.

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

workflow run

בדיקת הטרום-מיזוג שלנו גם עוברת:

allure report

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

build_status

לסיכום

במאמר זה, סקרנו את יצירת צינור בדיקות טרום-מיזוג באמצעות GitHub Actions, פייתון ו-pytest.

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

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


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

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


הפוסט הקודם
אוטומציית בדיקות - כיצד לערוך cookies ב-Selenium Python
הפוסט הבא
אוטומציית בדיקות - כיצד להשתמש ב-User Agent מותאם אישית ב-Selenium Python או Playwright Python כדי להימנע מבוטים של אבטחה