CI/CD - Tests
Overview
This pipeline automatically runs the test suite and measures coverage on every push and pull_request to the target branches. It is defined in .github/workflows/tests.yml and uses ubuntu-latest with Python 3.11 and pip cache.
Monitored branches
developfeaturesand sub-branchesfeatures/**
Sample workflow
name: CI - Tests
on:
push:
branches:
- develop
- features
- 'features/**'
pull_request:
branches:
- develop
- features
- 'features/**'
jobs:
tests:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: 'requirements.txt'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest-cov
- name: Run tests with coverage
run: |
pytest --cov=src --cov-report=term-missing:skip-covered \
--cov-report=xml:coverage.xml \
--cov-report=html
- name: Upload coverage XML artifact
uses: actions/upload-artifact@v4
with:
name: coverage-xml
path: coverage.xml
- name: Upload HTML coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-html
path: htmlcov
Main steps
Checkout the repository.
Set up Python with
pipcache.Install dependencies from
requirements.txtand installpytest-cov.Run the suite with coverage and upload artifacts (XML, HTML).
Customization
Add a Python version matrix:
strategy: matrix: python-version: ['3.10', '3.11']
Include linters (
flake8,ruff,black --check) beforepytest.Adjust trigger branches in
on.push.branchesandon.pull_request.branches.
Note
The features/** pattern includes sub-branches such as features/auth or features/tokens-export.
Tip
Use matrices to test across multiple Python versions and, if applicable, different operating systems.
See also
Extended details in ../CI/TESTS_WORKFLOW (Markdown) and the official GitHub Actions documentation.