Пересмешивающий boto3 S3 клиентский метод Python
Я пытаюсь смоделировать метод singluar из объекта клиента boto3 s3, чтобы вызвать исключение. Но мне нужны все другие методы, чтобы этот класс работал как обычно.
Это так, я могу проверить исключительный тест, когда происходит ошибка при выполненииupload_part_copy
1-я попытка
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()
Однако это дает следующую ошибку:
ImportError: No module named S3
2-я попытка
Посмотрев исходный код 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 = client.upload_part_copy()
Это исключение ... но наget_object
которого я хочу избежать.
Любые идеи о том, как я могу только бросить исключение наupload_part_copy
метод?