合并Python中的多个Azure Pipeline作业的结果(使用pytest)

时间:2019-06-26 15:20:46

标签: azure-devops azure-pipelines

我已经设置了开源项目以使用Azure Pipelines运行CI,并且正在根据how to test Python apps上Azure管道文档中的示例收集代码覆盖范围。

这似乎工作得很好,但是代码覆盖率统计信息似乎只能从单个作业中(随机)获得测试结果。为了获得我项目的完整报道(例如,有关平台的代码),我确实需要汇总所有测试工作的报道。

这是我的管道中的相关任务:

- bash: |
    source activate test_env
    pytest xarray --junitxml=junit/test-results.xml \
    --cov=xarray --cov-config=ci/.coveragerc --cov-report=xml
  displayName: Run tests
- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov'

配置Azure以显示此信息的正确方法是什么?

我尝试将--cov-append添加到我的pytest调用中,但这似乎没有什么改变。

1 个答案:

答案 0 :(得分:0)

根据文档,当您从不同的作业运行多个测试时,每个作业后都会清理结果,因此如果您想将所有测试结果收集到一个地方,您必须将结果发布到工件并在结束时所有测试作业,您必须合并它们。

基本上对于您进行的每个测试:

- jobs:
  - job: testjob1
    steps:
    - step1 -> run tests
    - step2 -> publish job1 artifacts
  - job: testjob2
    steps:
    - step1 -> run tests
    - step2 -> publish job2 artifacts
   ....
  - job: consolidate
    steps:
    - step1 -> downloadArtifacts
    - step2 -> publish test results

最后,您需要一份工作来下载所有这些工件,它们会完全按照您的方式发布它们。

参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml

参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops&tabs=yaml