Cobertura de código da suíte de testes do seu pacote Python#
A cobertura de código mede quanto do código do seu pacote é executado durante os testes. Alcançar uma cobertura alta pode ajudar a garantir a confiabilidade da sua base de código, mas não é garantia de qualidade. A seguir, apresentamos considerações importantes para usar a cobertura de código de forma eficaz.
Por que buscar uma cobertura de código alta?#
Uma boa prática é garantir que cada linha do seu código seja executada pelo menos uma vez durante a suíte de testes. Isso ajuda você a:
Identificar partes não testadas: Partes da sua base de código que não estão cobertas por testes.
Encontrar bugs: Bugs que poderiam passar despercebidos.
Aumentar a confiança: Confiança na estabilidade do seu software.
Limitações da cobertura de código#
Embora uma cobertura de código alta seja valiosa, ela tem limitações:
Código difícil de testar: Algumas partes do seu código podem ser difíceis de testar, seja pela complexidade, seja pelos recursos limitados.
Casos de borda não contemplados: Executar todas as linhas de código não garante que os casos de borda sejam tratados corretamente.
Em última análise, você deve se concentrar em como seu pacote será usado e garantir que os testes cubram esses cenários adequadamente.
Ferramentas para analisar a cobertura de código de pacotes Python#
Alguns serviços comuns para analisar a cobertura de código são o codecov.io e o coveralls.io. Esses projetos são gratuitos para ferramentas de código aberto e oferecem painéis que mostram quanto da sua base de código é coberto durante os testes. Recomendamos criar uma conta (no CodeCov ou no Coveralls) e usá-la para acompanhar sua cobertura de código.
A plataforma CodeCov é uma ferramenta útil para acompanhar visualmente a cobertura de código. Com ela, você obtém as mesmas informações resumidas fornecidas pela extensão pytest-cov. Também é possível ver quais linhas são cobertas pelos testes e quais não são. A cobertura de código é útil para avaliar testes unitários e/ou quanto do código do seu pacote está «coberto». No entanto, ela não avalia aspectos como testes de integração e fluxos de trabalho de ponta a ponta.#
Cobertura de tipagem e MyPy
Você também pode criar e enviar relatórios de tipagem ao CodeCov.
Como exportar relatórios locais de cobertura#
Além de usar serviços como CodeCov ou Coveralls, você pode gerar relatórios locais de cobertura diretamente com a ferramenta coverage.py. Isso pode ser especialmente útil para criar relatórios nos formatos Markdown ou HTML para uso offline ou na documentação.
Para gerar um relatório de cobertura no formato Markdown, execute:
python -m coverage report --format=markdown
Esse comando produzirá um resumo de cobertura formatado em Markdown, que você pode incluir na documentação do projeto ou compartilhar com sua equipe.
Para gerar um relatório HTML com uma visualização detalhada e interativa das linhas cobertas, use:
python -m coverage html
Por padrão, o relatório HTML gerado será salvo em um diretório chamado htmlcov. Abra o arquivo index.html no navegador para explorar os resultados da cobertura.
Esses relatórios locais são uma excelente maneira de revisar rapidamente a cobertura sem configurar um serviço externo.
Próximos passos#
Escrever testes relevantes é a base de uma cobertura útil. Consulte Escreva testes e Tipos de teste para saber mais sobre como desenvolver suítes de testes melhores. Aprenda a executar seus testes tanto localmente quanto em integração contínua.