本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
'使用 AWS CLI'样本的测试报告
您在 buildspec 文件中指定的测试将在构建期间运行。此示例向您展示了如何使用将测试合并 AWS CLI 到内置版本中 CodeBuild。您可以使用JUnit创建单元测试,也可以使用其他工具来创建配置测试。然后,您可以评估测试结果以修复问题或优化您的应用程序。
您可以使用 CodeBuild API或 AWS CodeBuild 控制台访问测试结果。此示例演示如何配置报告以便将其测试结果导出到 S3 存储桶。
主题
运行测试报告示例
使用以下步骤运行测试报告示例。
先决条件
-
创建您的测试用例。编写此示例时假设您有要包含在示例测试报告中的测试用例。您可以在 buildspec 文件中指定测试文件的位置。
支持以下测试报告文件格式:
-
黄瓜 JSON (.json)
-
JUnitXML(.xml)
-
NUnitXML(.xml)
-
NUnit3XML(.xml)
-
testng XML (.xml)
-
Visual Studio TRX (.trx)
-
视觉工作室 TRX XML (.xml)
使用任何可以创建其中一种格式的报告文件的测试框架(例如 Surefire JUnit 插件、Testng 或 Cucumber)来创建您的测试用例。
-
-
创建 S3 存储桶并记下其名称。有关更多信息,请参阅《Amazon S3 用户指南》中的如何创建 S3 存储桶?
-
创建一个IAM角色并记下它ARN。在创建构建项目ARN时需要。
-
如果您的角色没有以下权限,请添加它们。
{ "Effect": "Allow", "Resource": [ "*" ], "Action": [ "codebuild:CreateReportGroup", "codebuild:CreateReport", "codebuild:UpdateReport", "codebuild:BatchPutTestCases" ] }
有关更多信息,请参阅 测试报告操作的权限。
步骤 1:创建报告组
-
创建一个名为
CreateReportGroupInput.json
的文件。 -
在 S3 存储桶中创建要将测试结果导出到的文件夹。
-
将以下内容复制到
CreateReportGroupInput.json
。对于
,使用 S3 存储桶的名称。对于<bucket-name>
,请输入 S3 存储桶中文件夹的路径。<path-to-folder>
{ "name": "
<report-name>
", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<bucket-name>
", "path": "<path-to-folder>
", "packaging": "NONE" } } } -
在包含
CreateReportGroupInput.json
的目录中,运行以下命令:aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
输出如下所示。记下来ARN的
reportGroup
. 您可以在创建使用此报告组的项目时使用该 ARN。{ "reportGroup": { "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/
<report-name>
", "name": "<report-name>
", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<s3-bucket-name>
", "path": "<folder-path>
", "packaging": "NONE", "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3" } }, "created": 1570837165.885, "lastModified": 1570837165.885 } }
步骤 2:使用报告组配置项目
要运行报告,您需要先创建一个使用您的报告组配置的 CodeBuild 生成项目。为报告组指定的测试用例将在您运行构建时运行。
-
创建一个名为
buildspec.yml
的 buildspec 文件。 -
使用以下内容YAML作为
buildspec.yml
文件模板。请务必包含运行测试的命令。在reports
部分中,指定包含测试用例结果的文件。这些文件存储了您可以访问的测试结果 CodeBuild。它们在创建后 30 天过期。这些文件与您导出到 S3 存储桶的原始测试用例结果文件不同。version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo Running tests -
<enter commands to run your tests>
reports:<report-name-or-arn>
: #test file information files: - '<test-result-files>
' base-directory: '<optional-base-directory>
' discard-paths: false #do not remove file paths from test result files -
创建一个名为
project.json
的文件。此文件包含 create-project 命令的输入。 -
将以下内容复制JSON到
project.json
。对于source
,请输入包含源文件的存储库的类型和位置。对于serviceRole
,ARN请指定您正在使用的角色。{ "name": "test-report-project", "description": "sample-test-report-project", "source": { "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE", "location": "
<your-source-url>
" }, "artifacts": { "type": "NO_ARTIFACTS" }, "cache": { "type": "NO_CACHE" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "small" }, "serviceRole": "arn:aws:iam::<your-aws-account-id>
:role/service-role/<your-role-name>
" } -
在包含
project.json
的目录中,运行以下命令:这将创建一个名为test-project
的项目。aws codebuild create-project --cli-input-json file://project.json
步骤 3:运行报告并查看其结果
在此部分中,您将运行之前创建的项目的构建。在生成过程中, CodeBuild 创建包含测试用例结果的报告。该报告包含在您指定的报告组中。
-
要开始构建,请运行以下命令。
test-report-project
是上面创建的构建项目的名称。记下输出中显示的构建 ID。aws codebuild start-build --project-name test-report-project
-
运行以下命令以获取有关您的版本的信息,ARN包括您的报告。对于
,请指定您的构建 ID。在输出的<build-id>
reportArns
属性ARN中记下报告。aws codebuild batch-get-builds --ids
<build-id>
-
运行以下命令以获取有关报告的详细信息。对于
,请指定您的报告ARN。<report-arn>
aws codebuild batch-get-reports --report-arns
<report-arn>
输出如下所示。此示例输出显示了成功、失败、跳过、导致错误或返回未知状态的测试数量。
{ "reports": [ { "status": "FAILED", "reportGroupArn": "
<report-group-arn>
", "name": "<report-group-name>
", "created": 1573324770.154, "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<amzn-s3-demo-bucket>", "path": "<path-to-your-report-results>", "packaging": "NONE", "encryptionKey": "<encryption-key>" } }, "expired": 1575916770.0, "truncated": false, "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>
:2c254862-ddf6-4831-a53f-6839a73829c1", "type": "TEST", "arn": "<report-arn>
", "testSummary": { "durationInNanoSeconds": 6657770, "total": 11, "statusCounts": { "FAILED": 3, "SKIPPED": 7, "ERROR": 0, "SUCCEEDED": 1, "UNKNOWN": 0 } } } ], "reportsNotFound": [] } -
运行以下命令列出有关报告的测试用例的信息。对于
,请指定ARN您的报告的。对于可选<report-arn>
--filter
参数,您可以指定一个状态结果(SUCCEEDED
、FAILED
、SKIPPED
、ERROR
或UNKNOWN
)。aws codebuild describe-test-cases \ --report-arn
<report-arn>
\ --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN输出如下所示。
{ "testCases": [ { "status": "FAILED", "name": "Test case 1", "expired": 1575916770.0, "reportArn": "
<report-arn>
", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>
" }, { "status": "SUCCEEDED", "name": "Test case 2", "expired": 1575916770.0, "reportArn": "<report-arn>
", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>
" } ] }