我在 AzureDevops 中对 python 包运行了覆盖率测试,但令人惊讶的是界面中显示的结果与我在 index.html 工件中的结果不对应。
这是管道的相关部分:
- stage: coverage
pool:
vmImage: ubuntu-latest
jobs:
- job: coverage
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: "3.9"
displayName: Use Python 3.9
- script: python -m pip install nox
displayName: Install dependencies
- script: nox -s test
displayName: Test with pytest and coverage
- task: PublishCodeCoverageResults@2
displayName: Publish code coverage results
inputs:
summaryFileLocation: "coverage.xml"
当我打开管道结果中的覆盖率选项卡时,我会看到以下内容:
当我打开工件内容时,我得到:
我想应该显示第二个(这就是我在其他人的屏幕截图上看到的那个)有人可以向我解释一下我缺少什么以及为什么我得到了报告的降级版本吗?
覆盖率报告来自文件
coverage.xml
而不是 index.html
。您可以在下面的任务中找到它:
- task: PublishCodeCoverageResults@2
displayName: Publish code coverage results
inputs:
summaryFileLocation: "coverage.xml"
coverage.xml
和 index.html
有不同的报告目标:
coverage.xml 文件通常用于与需要特定 XML 格式的代码覆盖率数据的工具集成,例如持续集成服务或代码质量分析工具。另一方面,生成index.html是为了提供人类可读的、详细的覆盖率报告,可以在网络浏览器中查看。
覆盖率工具可以配置为包含或排除某些文件或目录,这可能会对报告产生不同的影响。此外,计算覆盖范围的方式可能会根据配置和用于生成报告的特定命令而有所不同。
因此,
coverage.xml
和index.html
之间可能存在一些差异
您可以导出
coverage.xml
与index.html
比较内容进行检查。