Zombando do método cliente boto3 S3 Python

Estou tentando zombar de um método singluar do objeto cliente boto3 s3 para lançar uma exceção. Mas preciso de todos os outros métodos para que essa classe funcione normalmente.

Isso é para que eu possa testar um teste de exceção singular quando ocorrer um erro ao executar umupload_part_copy

1ª tentativa

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()

No entanto, isso fornece o seguinte erro:

ImportError: No module named S3

2ª tentativa

Depois de analisar o código-fonte botocore.client.py, descobri que ele está fazendo algo inteligente e o métodoupload_part_copy não existe. Descobri que parece chamarBaseClient._make_api_call em vez disso, tentei zombar disso

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()

Isso gera uma exceção ... mas noget_object o que eu quero evitar.

Alguma idéia de como eu só posso lançar a exceção noupload_part_copy método?

questionAnswers(5)

yourAnswerToTheQuestion