Pergunta

Eu sou um tipo de rookie com o teste de unidade python e, particularmente, coverage.py. É desejável ter relatórios de cobertura incluem a cobertura de seus arquivos de teste reais?

Aqui está uma imagem do meu relatório HTML como um exemplo.

Você pode ver que o relatório inclui tests/test_credit_card. No começo eu estava tentando omitir o diretório tests/ a partir dos relatórios, assim:

coverage html --omit=tests/ -d tests/coverage

Eu tentei diversas variações desse comando, mas eu poderia não para a vida de me pegar os testes / excluídos. Depois de aceitar a derrota, comecei a me perguntar se talvez os arquivos de teste são deveria para ser incluído no relatório.

Alguém pode lançar alguma luz sobre isso?

Foi útil?

Solução

Editar: Eu acho que agora concordam com o comentário abaixo sobre ele não ser um bom idéia de misturar um teste do seu código de produção com um teste do seu teste código. Eu não posso excluir uma resposta aceito por isso vou deixá-lo inalterado.

** Por favor downvote minha resposta! **


É uma boa idéia para ver a cobertura de seus testes, uma vez que pode apontar para problemas. Se o seu código de teste não está sendo executado, então não havia muito sentido em escrevê-lo!

O que eu sempre recebo é quando eu dou duas funções de teste de unidade do mesmo nome - eu adicionar um novo teste de vários meses após o original e só acontecerá a escolher o mesmo nome. O quadro unittest não vai reclamar sobre isso - uma das funções esconde o outro e ele simplesmente não será executado um dos testes! O relatório de cobertura detalhada mostra o problema imediatamente embora.

Se você tiver outro código em seus testes que não está sendo executado, em seguida, que também pode apontar para outros bugs, embora tipicamente muitas vezes há um par de linhas de código clichê que pode não ficar coberto, dependendo de como os testes se invocado, por isso não obcecar sobre a obtenção de 100%.

E se você tiver código de teste que realmente não é necessária mais nenhuma, então é sempre bom para apagar!

Outras dicas

coverage html --omit="*/test*" -d tests/coverage

Criar arquivo .coveragerc na pasta raiz do projeto, e incluem o seguinte:

[run]
omit = *tests*

Você também pode especificar explicitamente qual diretório tem o código que você quer cobertura em vez de dizer que as coisas omitir. Em um arquivo .coveragerc, se o diretório de interesse é chamado demo, isso parece

[run]
source = demo
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top