【问题标题】:Unable to do unit testing of Python AWS code无法对 Python AWS 代码进行单元测试
【发布时间】:2019-10-20 08:23:24
【问题描述】:

我以前从未做过单元测试,所以我无法理解如何在我的代码的任何模块中进行。

我已经使用 boto3 在 AWS 中编写了用于标签插入和删除的函数。我将在下面附上一个函数的代码。我需要知道如何在不使用模拟的情况下对代码进行单元测试。还是有可能?

def tagging_insertion(self, source_objectname, tagset):
    s3_client = boto3.client('s3', region_name=self.parameter["default_region"])
    s3_client.put_object_tagging(
        Bucket = self.parameter["SourceBucketName"],
        Key = source_objectname,
        Tagging = tagset
    )

这是我要进行单元测试的代码的一部分。

【问题讨论】:

  • 如果不模拟就无法对其进行单元测试,因为如果不模拟 boto3,您将实际调用 AWS,而这绝对不是单元测试。

标签: python amazon-web-services python-unittest


【解决方案1】:

模拟 put_object_tagging 是正确的选择。

“肮脏”的替代方法是执行此类操作,但不推荐。因为不应更改代码以进行测试。这就是为什么要使用模拟和固定装置。

def tagging_insertion(self, source_objectname, tagset, is_test=False):
     s3_client = boto3.client('s3', region_name=self.parameter["default_region"])
     if not is_test:
         s3_client.put_object_tagging(Bucket=self.parameter["SourceBucketName"],
                                      Key=source_objectname,Tagging=tagset)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    相关资源
    最近更新 更多