Skip to content

Instantly share code, notes, and snippets.

@ShilGen
Last active December 18, 2024 22:11
Show Gist options
  • Save ShilGen/8e0dd6c2beb8b7f7c33f7914f50911ac to your computer and use it in GitHub Desktop.
Save ShilGen/8e0dd6c2beb8b7f7c33f7914f50911ac to your computer and use it in GitHub Desktop.

Пример структуры проекта:

project-root/
├── .github/
│   └── workflows/
│       └── python-tests.yml
├── tests/
│   ├── test_example.py
│   └── test_another.py
├── requirements.txt
└── ...

Шаги для настройки:

  • Создайте папку .github/workflows в корне вашего репозитория, если ее еще нет.
  • Внутри этой папки создайте файл с названием, например, python-tests.yml.

Объяснение:

on:

Workflow запускается при каждом пуше и при создании Pull Request в ветку main.

jobs:

Здесь определен один job test, который выполняется на виртуальной машине ubuntu-latest.

Шаги внутри jobs:

  • Checkout code: Клонирует ваш репозиторий.
  • Set up Python: Устанавливает указанный Python (в данном случае версии 3.9).
  • Install dependencies: Устанавливает зависимости из файла requirements.txt.
  • Run tests: Выполняет тесты с помощью pytest.

pytest будет искать файлы, соответствующие шаблону test_*.py или *_test.py в папке /tests.

--html=report.html: Генерирует HTML-отчёт с результатами тестов.

--self-contained-html: Делает HTML-отчёт автономным, включив в него все стили и скрипты.

Все найденные тесты будут запущены, а результат будет сохранён в файле report.html.

Теперь тесты из папки /tests будут выполняться при каждом запуске Workflow.

Этот Workflow полезен для автоматической проверки кода перед слиянием изменений или деплоем.

name: Run Python Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-cov pytest-html
- name: Run tests and generate report
run: |
pytest tests/ --cov=. --cov-report=xml --html=report.html --self-contained-html
- name: Configure Git
run: |
git config user.name "GitHub Actions"
git config user.email "[email protected]"
- name: Commit and push test report
run: |
mv report.html test-report.html
git add test-report.html
git commit -m "Add test report from GitHub Actions"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment