Ответ
Настройка запуска тестов в GitLab CI/CD осуществляется через файл .gitlab-ci.yml в корне репозитория. Вот пример конвейера для проекта на Python с тестами Pytest.
# .gitlab-ci.yml
stages:
- test
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
# Кэширование зависимостей для ускорения сборок
cache:
paths:
- .cache/pip
- venv/
# Задание для запуска модульных тестов
unit_tests:
stage: test
image: python:3.11-slim
script:
- python -m pip install --upgrade pip
- pip install -r requirements.txt
- pytest tests/unit/ --junitxml=report-unit.xml
artifacts:
when: always
reports:
junit: report-unit.xml
# Задание для запуска интеграционных тестов (параллельно с unit)
integration_tests:
stage: test
image: python:3.11-slim
services:
- postgres:latest
variables:
POSTGRES_DB: test_db
script:
- pip install -r requirements.txt
- pytest tests/integration/ --junitxml=report-integration.xml
artifacts:
reports:
junit: report-integration.xml
# Задание для статического анализа кода (линтер)
lint:
stage: test
image: python:3.11-slim
script:
- pip install flake8 black
- flake8 .
- black --check .
Ключевые элементы для QA:
artifacts: reports: junit— GitLab автоматически парсит XML-отчеты и отображает результаты в интерфейсе Merge Request.services— позволяет запускать контейнеры-зависимости (БД, брокеры сообщений) для интеграционных тестов.- Разделение на
unit_testsиintegration_testsделает конвейер более наглядным и управляемым. - Этап
lintпомогает поддерживать качество кода тестов.