【问题标题】:Code Coverage Report for AWS Lambda Integration test using Python使用 Python 进行 AWS Lambda 集成测试的代码覆盖率报告
【发布时间】:2020-12-13 19:01:49
【问题描述】:

我已经为到达开发站点(在 AWS 中)的 lambdas 编写了集成测试。测试工作正常。测试是在一个单独的项目中编写的,该项目使用请求对象来访问端点以验证结果。

目前,我正在本地运行所有测试。 Lambda 使用单独的 Jenkins 作业进行部署。

但是,我需要为这些测试生成代码覆盖率报告。我不确定如何生成代码覆盖率报告,因为我直接从本地访问开发 URL。我正在使用 Python 3.8。

所有的 lambda 都有 lambda 层,提供数据库连接和一些其他常见的业务逻辑。

提前致谢。

【问题讨论】:

    标签: python-3.x aws-lambda integration-testing


    【解决方案1】:

    代码覆盖率可能不是集成测试的正确指标。据我所知,您可以使用集成测试来测试您的需求/用例/用户故事。

    假设您有一个具有购物车功能的应用程序。用户在该购物车中有 10 件商品,现在删除其中一件。您的集成测试将确保在此操作之后,购物车中只剩下(正确的)9 件商品。

    对于这种测试,运行哪些/多少代码无关紧要。它更像是一个黑盒测试。您想知道对于给定的“动作”是否创建了正确的“状态”。

    代码覆盖率通常用于单元测试。对于集成测试,我认为您想知道涵盖了多少需求/用例/用户故事。

    【讨论】:

    • 我同意你的评论。我们没有为 lambdas 编写单元测试。但是,我们需要显示生成一些百分比代码被我们的 API/集成测试覆盖。此时编写单元测试可能需要一些时间。
    • @user2026504 我对 Python 生态系统了解得不够多,不知道这里是否有什么可以帮助您的。也就是说,亚马逊最近宣布了一项新的 Lambda 功能,可以帮助您解决这个问题:Lambda Extensions。他们还刚刚宣布推出Docker image (from ECR) as Lambda 的可能性。因此,当调用 Lambda 时,也许您可​​以构建一个包含一些工具来创建代码覆盖率报告的图像。希望对您有所帮助。
    • 在这里编写单元测试也很有挑战性,因为所有的 lambdas 都至少使用一层来提供数据库连接和一些其他常见的业务逻辑功能。所以不确定我是否可以使用 pytest 在 lambda 中运行仅 .py 文件,或者我也必须在那里调用 lambda 以便它可以获得 lambda 层的所有引用。这可能是一个单独的问题。不幸的是,我没有从 AWS 中找到任何关于如何使用 python 为具有多个层的 lambdas 编写单元测试的指南,而不是用于 api 测试的代码覆盖率。
    • 当然,延斯。让我阅读链接,看看它是否提供了一些指导。我已经在使用 Docker 使用 AWS SAM 进行本地调试和开发。
    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2017-09-03
    • 2019-09-02
    • 2021-07-23
    • 2020-02-24
    • 2017-03-23
    相关资源
    最近更新 更多