Como simular um objeto / chamada de cliente boto3
Estou tentando zombar de uma função boto3 específica. Meu módulo, Limpeza, importa boto3. A limpeza também possui uma classe "limpador". Durante o init, o limpador cria um cliente ec2:
self.ec2_client = boto3.client('ec2')
Eu quero zombar do método do cliente ec2: desribe_tags (), que python diz é:
<bound method EC2.describe_tags of <botocore.client.EC2 object at 0x7fd98660add0>>
o mais longe que eu consegui é importar botocore no meu arquivo de teste e tentar:
mock.patch(Cleaner.botocore.client.EC2.describe_tags)
que falha com:
AttributeError: 'module' object has no attribute 'EC2'
Como faço para zombar desse método?
A limpeza se parece com:
import boto3
class cleaner(object):
def __init__(self):
self.ec2_client = boto3.client('ec2')
O objeto ec2_client é aquele que possui o método desribe_tags (). É um objeto botocore.client.EC2, mas nunca importo diretamente o botocore.