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?