在AWS CodeBuild生成的单元测试和覆盖率报告中查看

14

我正在使用AWS CodeBuild运行pytest单元测试来测试我的Python项目。我使用--junitxml参数和pytest-cov软件包生成测试报告和覆盖率报告,并将它们列为我的buildspec.yml的artifacts。

以前我使用Jenkins来做这个,Jenkins提供了一些漂亮的图表和表格,显示测试结果历史和覆盖率历史,以及最近测试的结果。

有没有什么好的方法可以查看由我的CodeBuild项目生成的报告?我在CodeBuild或CodePipeline中没有找到任何直接的方法。我是否需要使用一个能够接收报告文件的单独工具?如果是,有哪些工具可以使用?

2个回答

4
CodeBuild最近宣布支持测试报告。以下是博客文章的内容:
报告可以采用JUnit XML或Cucumber JSON格式。你可以在一个地方查看诸如Pass Rate %、Test Run Duration和Passed versus Failed/Error test cases数量等指标。只要报告是以支持的格式生成的,构建程序可以使用任何测试框架。
要实现此目标,需要更新两件事情。首先,在buildspec.yml文件中添加一些配置:
reports:
  SurefireReports: # CodeBuild will create a report group called "SurefireReports".
    files: #Store all of the files
      - '**/*'
    base-directory: 'target/surefire-reports' # Location of the reports 

其次,CodeBuild需要一些额外的IAM权限:

{
    "Statement": [
        {
            "Resource": "arn:aws:codebuild:your-region:your-aws-account-id:report-group/my-project-*", 
            "Effect": "Allow",
            "Action": [
                "codebuild:CreateReportGroup",
                "codebuild:CreateReport",
                "codebuild:UpdateReport",
                "codebuild:BatchPutTestCases"
            ]
        }
    ]
}

2
一种解决方案是让pytest生成HTML报告,例如使用pytest-html插件(pytest-cov原生支持HTML报告生成)。然后,您可以在buildspec.yml文件中使用aws s3 cp命令将报告复制到S3存储桶中。或者,您可以在buildspec.yml文件中将报告附加到构建工件上。请注意,并不是每个人都习惯将测试报告与可执行代码混合在一起。这取决于生成的工件如何处理、所需后处理的数量、它们如何被交付和部署、是否会被第三方使用等因素。

4
我也考虑过这个问题。不足之处在于它不能像 Jenkins 一样提供漂亮的历史记录和可视化。你知道有没有能够使用这些报告的工具吗? - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接