相关疑难解决方法(0)

模拟boto3 S3客户端方法Python

我正在尝试从boto3 s3客户端对象模拟一个单一方法来抛出异常.但我需要这个类的所有其他方法正常工作.

这样我可以在执行upload_part_copy时测试单个异常测试并发生错误

第一次尝试

import boto3
from mock import patch

with patch('botocore.client.S3.upload_part_copy', side_effect=Exception('Error Uploading')) as mock:
    client = boto3.client('s3')
    # Should return actual result
    o = client.get_object(Bucket='my-bucket', Key='my-key')
    # Should return mocked exception
    e = client.upload_part_copy()
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下错误:

ImportError: No module named S3
Run Code Online (Sandbox Code Playgroud)

第二次尝试

在查看了botocore.client.py源代码后,我发现它正在做一些聪明的事情并且该方法upload_part_copy不存在.我发现它似乎在调用,BaseClient._make_api_call所以我试图嘲笑它

import boto3
from mock import patch

with patch('botocore.client.BaseClient._make_api_call', side_effect=Exception('Error Uploading')) as mock:
    client = boto3.client('s3')
    # Should return actual result
    o = client.get_object(Bucket='my-bucket', Key='my-key')
    # Should return mocked exception
    e …
Run Code Online (Sandbox Code Playgroud)

python mocking boto botocore boto3

51
推荐指数
5
解决办法
4万
查看次数

标签 统计

boto ×1

boto3 ×1

botocore ×1

mocking ×1

python ×1