Capítulo 1 — Configurando o projeto
Criando um projeto Django pequeno para testar com pytest
O pytest-django é um plugin do pytest que integra o Django ao ecossistema de testes do pytest — em vez do TestCase e do estilo unittest que vêm nativos do Django, você escreve os testes com fixtures, assert simples e toda a sintaxe do pytest que já usamos, mas com acesso total ao banco de dados de teste e às ferramentas do Django por baixo dos panos. Vamos realizar testes unitários dentro do ecossistema Django, começando por um projeto pequeno de exemplo.
Criando o projeto
Os passos abaixo criam a pasta do projeto, iniciam o uv, adicionam o Django como dependência normal e o pytest com o pytest-django como dependências de desenvolvimento, criam o projeto e um app Django simples, e rodam a migração inicial (usa SQLite por padrão, não precisa configurar nada).
# 1. criar e entrar na pastamkdir django_pytest_praticacd django_pytest_pratica# 2. iniciar o projeto com uvuv init# 3. adicionar o Django como dependência normaluv add django# 4. adicionar pytest e pytest-django como dependências de devuv add --dev pytest pytest-django# 5. criar o projeto Django (o "." evita uma pasta extra redundante)uv run django-admin startproject mysite .# 6. criar um app simples pra ter algo real pra testaruv run python manage.py startapp core# 7. rodar a migração inicial (usa SQLite por padrão, não precisa configurar nada)uv run python manage.py migrate
Ajustes manuais
Depois desses comandos, dois ajustes manuais nos arquivos: em mysite/settings.py, adicione 'core' na lista INSTALLED_APPS; e no pyproject.toml, adicione a configuração abaixo.
[tool.pytest.ini_options]DJANGO_SETTINGS_MODULE = "mysite.settings"
Validando a configuração
Por fim, valide a configuração rodando o pytest. Saída esperada, ainda sem nenhum teste escrito:
uv run pytest# platform linux -- Python 3.14.3, pytest-9.1.1, pluggy-1.6.0# django: version: 6.1, settings: mysite.settings (from ini)# plugins: django-4.14.0# collected 0 items## no tests ran in 0.05s
Ver também