Пересмешивающий 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 метод?