如何使用boto3模拟删除桶操作的单元测试

时间:2018-03-08 13:37:06

标签: python python-2.7 unit-testing mocking boto3

我正在使用Python 2.7和boto3与S3存储桶进行交互。到目前为止一切都很好!

我现在想要实现的是删除桶操作的单元测试,但是使用模拟数据,即没有与S3存储的真正交互。

对于整个项目中的其他单元测试,我已成功使用补丁和boto3的Stubber,但由于某些原因,我无法找到使用相同技术模拟使用S3 resourceBucket sub-resource

这是我要进行单元测试的代码片段:

def delete_bucket(self, bucket_name):
    resource = boto3.resource('s3')
    bucket = resource.Bucket(bucket_name)
    bucket.objects.all().delete()
    return bucket.delete()

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用unittest.mock。这样,可以修补任何方法并设置返回值:

from unittest.mock import patch
with patch('boto3.bucket.delete') as boto_delete_patch:
    boto_delete_patch.return_value = 'Return value'
    # Perform any action