Burlándose del método del cliente boto3 S3 Python
Estoy tratando de burlarme de un método singular del objeto cliente boto3 s3 para lanzar una excepción. Pero necesito todos los demás métodos para que esta clase funcione normalmente.
Esto es para que pueda probar una prueba de excepción singular cuando se produce un error al realizar unupload_part_copy
1er intento
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()
Sin embargo, esto da el siguiente error:
ImportError: No module named S3
2º intento
Después de mirar el código fuente botocore.client.py descubrí que está haciendo algo inteligente y el métodoupload_part_copy
no existe. Descubrí que parece llamarBaseClient._make_api_call
en su lugar, traté de burlarme de eso
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()
Esto arroja una excepción ... pero en elget_object
que quiero evitar
Alguna idea sobre cómo solo puedo lanzar la excepción en elupload_part_copy
¿método?