我正在使用AWS CodeBuild使用Pytest为我的Python项目运行单元测试。我正在使用-junitxml参数和pytest-cov软件包来生成我在buildSpec.yml中列为工件的测试报告和覆盖范围报告。
我过去曾使用过詹金斯(Jenkins(来做到这一点,詹金斯(Jenkins(提供了一些不错的图表和表格,显示了测试结果历史记录和覆盖历史记录以及最新测试的结果。
有没有一个很好的方法来查看我的CodeBuild项目生成的报告?我在CodeBuild或Codepipeline中没有发现任何内容。我是否必须使用可以摄入报告文件的单独工具?如果是这样,有什么工具?
CodeBuild最近宣布了对测试报告的支持。从博客文章中复制:
报告可以以JUNIT XML或Cucumber JSON格式为。您可以在一个位置查看指标,例如通过率%,测试运行持续时间以及通过的失败/错误测试用例。只要以支持格式生成报告,构建者就可以使用任何测试框架。
。
需要更新两件事才能实现这一目标。首先,将一些配置添加到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"
]
}
]
}
一个解决方案可能是让pytest生成HTML报告,例如通过使用PYTEST-HTML插件(Pytest-COV具有对HTML报告生成的本机支持(。然后,您可以在buildspec.yml
文件中使用AWS S3 CP命令将报告复制到S3存储桶中。另外,您可以将报告附加到buildspec.yml
文件中的构建伪像。请注意,并非每个人都对将测试报告与可执行代码混合在一起的想法感到满意。这取决于如何处理生成的工件,所需的后处理量,如何交付和部署它们,如果将它们被第三方食用等等。