Introdução
Ao desenvolver bibliotecas ou aplicações em Python, é essencial garantir a compatibilidade com diferentes versões do interpretador. Isso se torna ainda mais crítico ao publicar pacotes no PyPI, onde os usuários podem estar rodando versões distintas do Python. Instalar manualmente o Python 3.7, 3.8, 3.9, 3.10 e testar cada versão consome muito tempo e esforço.
É aí que entra o tox — uma ferramenta poderosa de automação de testes que executa seus testes em ambientes virtuais isolados com diferentes versões do Python. O Tox cuida da instalação automática de dependências, criação de ambientes limpos e garante a reprodutibilidade dos resultados dos testes.
O que é o Tox e por que usá-lo
Tox (abreviação de "testing out of the box") é uma ferramenta de linha de comando, escrita em Python, que automatiza o processo de teste de projetos Python em diversos ambientes. Ela cria ambientes virtuais isolados, instala as dependências e executa os testes, permitindo verificar a compatibilidade do código com diferentes versões do Python e diferentes conjuntos de dependências.
Principais vantagens do Tox:
Isolamento de ambientes — cada teste é executado em um ambiente virtual separado, eliminando conflitos de dependências.
Automação — processo totalmente automático de criação de ambientes, instalação de dependências e execução de testes.
Múltiplas versões — possibilidade de testar simultaneamente em diferentes versões do Python.
Reprodutibilidade — garante resultados consistentes em diferentes ambientes.
Integração com CI/CD — configuração simples para testes automatizados em sistemas de integração contínua.
Instalação e configuração inicial
Instalando o Tox
Você pode instalar o Tox de várias formas:
# Via pip
pip install tox
# Via conda
conda install -c conda-forge tox
# Via pipx (recomendado)
pipx install tox
Criando o arquivo de configuração básico
O principal arquivo de configuração do Tox é o tox.ini, que deve estar na raiz do seu projeto:
[tox]
envlist = py38, py39, py310, py311
[testenv]
deps =
pytest
pytest-cov
commands =
pytest tests/ --cov=src/
Estrutura do projeto
Para o Tox funcionar corretamente, recomendamos a seguinte estrutura de projeto:
my_project/
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── module.py
├── tests/
│ ├── __init__.py
│ └── test_module.py
├── tox.ini
├── setup.py (ou pyproject.toml)
└── requirements.txt
Fundamentos do uso do Tox
Comandos básicos
O Tox oferece uma interface de linha de comando simples:
# Executar todos os ambientes definidos no envlist
tox
# Executar um ambiente específico
tox -e py39
# Executar múltiplos ambientes
tox -e py38,py39,lint
# Forçar a recriação dos ambientes
tox -r
# Executar com saída detalhada
tox -v
# Saída muito detalhada (para depuração)
tox -vv
Como o Tox funciona
O processo de funcionamento do Tox segue estas etapas:
- Análise da configuração — leitura do arquivo
tox.inie definição da lista de ambientes - Criação de ambientes virtuais — para cada versão do interpretador Python especificada
- Instalação do pacote — instalação do pacote sendo testado em cada ambiente
- Instalação das dependências — instalação das dependências listadas na seção
deps - Execução dos comandos — execução dos comandos definidos na seção
commands
Também na biblioteca
Laravel Framework para PHP: guia completo com exemplos
Programação Reativa em Go (Golang): bibliotecas, padrões e exemplos
Trabalhando com S3 e armazenamentos em nuvem em C# (.NET): AWS SDK e MinIO
Wolverine para C# (.NET): guia completo com exemplos práticos
Cliente Redis para Java: Jedis, Lettuce e Redisson — visão geral e exemplos