O que é o Coverage.py
O Coverage.py é uma ferramenta poderosa para análise de cobertura de código com testes em Python, que permite aos desenvolvedores identificar quais partes do seu código foram executadas durante os testes e quais permaneceram sem uso. Esta ferramenta é uma parte essencial do processo de garantia de qualidade de código e ajuda a identificar potenciais problemas na cobertura de testes.
O principal objetivo do Coverage.py é fornecer informações detalhadas sobre o quão completamente seus testes cobrem o código escrito. A ferramenta analisa a execução do programa e gera relatórios mostrando a porcentagem de cobertura para cada arquivo, módulo ou até mesmo linhas individuais de código.
Principais recursos do Coverage.py
O Coverage.py oferece uma ampla gama de funções para análise de cobertura de código:
Medição de cobertura de linhas — função básica que rastreia quais linhas de código foram executadas durante os testes.
Análise de ramificações — função avançada que verifica se todos os caminhos possíveis de execução em construções condicionais (if, elif, else) foram executados.
Geração de relatórios — criação de relatórios detalhados em vários formatos: texto, HTML, XML, JSON.
Integração com frameworks — funcionamento perfeito com frameworks de teste populares como pytest, unittest, nose.
Configuração de exclusões — possibilidade de excluir determinados arquivos, pastas ou linhas da análise de cobertura.
Instalação e configuração inicial
Instalação padrão
Para instalar o Coverage.py, use o pip:
pip install coverage
Instalação com recursos adicionais
Se você trabalha com pytest, é recomendável instalar o plugin pytest-cov:
pip install pytest-cov
Para trabalhar com arquivos de configuração toml:
pip install coverage[toml]
Verificando a instalação
Após a instalação, verifique se o Coverage.py está funcionando corretamente:
coverage --version
Comandos principais e seu uso
Executando a análise de cobertura
Execução básica da análise de cobertura para um script Python:
coverage run my_script.py
Execução com parâmetros adicionais:
coverage run --source=my_package my_script.py
Execução com o módulo unittest
coverage run -m unittest discover
Execução com pytest
coverage run -m pytest
Ou usando pytest-cov:
pytest --cov=my_module tests/
Visualizando o relatório de cobertura
Relatório de texto no terminal
coverage report
Exemplo de saída:
Name Stmts Miss Cover
----------------------------------------
my_module.py 25 3 88%
utils.py 15 0 100%
main.py 20 5 75%
----------------------------------------
TOTAL 60 8 87%
Relatório detalhado com linhas ausentes
coverage report --show-missing
Relatório HTML
coverage html
Após executar o comando, abra o arquivo htmlcov/index.html no navegador para visualizar o relatório interativo.
Relatório XML para CI/CD
coverage xml
Relatório JSON
coverage json
Gerenciamento de dados de cobertura
Limpando dados
Também na biblioteca
Recommendations