Зачем нужна матрица тестов
Каждая версия Django поддерживает лишь определённые версии Python, а ваш код может сломаться на новом Python или на следующем Django. Матрица тестов прогоняет один и тот же набор на каждой поддерживаемой паре версий, локально и в CI.
| Тип проекта | Размер матрицы |
|---|---|
| Приложение, которое вы деплоите | одна пара, как в production |
| Переиспользуемое приложение или библиотека | все поддерживаемые пары Python x Django |
| Приложение перед обновлением | текущая пара и следующий Django |
Поддерживаемые пары перечислены в официальном FAQ Django («What Python versions can I use with Django?»). Берите матрицу оттуда, а не по памяти. В примерах ниже: Django 5.2 (LTS) на Python 3.10-3.13 и Django 6.0 на Python 3.12-3.13.
💡 Приложению обычно хватает одной пары. Полная матрица окупается в основном у библиотек.
pytest-django
pytest-django запускает тесты через pytest вместо manage.py test. Настройки лежат в pyproject.toml:
[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "config.settings.test"
python_files = ["tests.py", "test_*.py"]
addopts = "--reuse-db -q"
filterwarnings = [
"error::DeprecationWarning:django.*",
]import pytest
from django.urls import reverse
@pytest.mark.django_db
def test_post_list(client):
response = client.get(reverse("blog:post-list"))
assert response.status_code == 200