Posso combinar relatórios mypy com relatórios de cobertura pytest?

Oct 15 2020

Posso gerar um relatório do tipo "cobertura" com mypy via

mypy . --html-report mypy-report

e um relatório de cobertura pytest com pytest-cov

pytest --cov=app --cov-report=html

Existe uma maneira de combinar os dois relatórios? Eu estaria interessado em código que não seja coberto por testes de unidade nem por mypy.

Respostas

2 MikeFiedler Oct 25 2020 at 19:31

Gastei um pouco de tempo nisso e fiz alguns progressos, mas não tenho uma solução totalmente funcional.

Ambos pyteste mypytêm sinalizadores para emitir um relatório baseado em XML, e o esquema comum que eles compartilham é para a ferramenta Cobertura baseada em Java .

Exemplo de invocação para produzir um arquivo XML para cada um:

pytest --cov=app --cov-report=xml:pytest-cobertura.xml
mypy app.py --cobertura-xml-report .

Depois disso, você terá dois arquivos XML semelhantes chamados:

  • pytest-cobertura.xml
  • coverage.xml- mypypermitirá apenas um diretório, não um nome de arquivo

Eu explorei a tentativa de mesclar esses dois arquivos em um único, mas não fui capaz de fazer isso com sucesso no tempo que passei nisso - mas deve ser algo como analisar a árvore XML e mesclar os dois conjuntos de linestags XML e a criação de um combined.xmlarquivo.

Agora, cada arquivo individualmente pode ser renderizado para terminal ou HTML com a pycoberturaferramenta, assim:

pycobertura show --format html --output coverage.html combined.xml

Ainda não consegui descobrir a fusão, mas gostaria de dar a você o que descobri.