Tox: teste em múltiplas versões do Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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:

  1. Análise da configuração — leitura do arquivo tox.ini e definição da lista de ambientes
  2. Criação de ambientes virtuais — para cada versão do interpretador Python especificada
  3. Instalação do pacote — instalação do pacote sendo testado em cada ambiente
  4. Instalação das dependências — instalação das dependências listadas na seção deps
  5. Execução dos comandos — execução dos comandos definidos na seção commands

Recommendations