Próbuję wyśmiać jedną konkretną funkcję boto3. Mój moduł, Sprzątanie, importuje boto3. Oczyszczanie ma również klasę "czystszą". Podczas init odkurzacz tworzy klienta EC2:Jak wyśmiać obiekt klienta Boto3/zadzwonić pod numer
self.ec2_client = boto3.client('ec2')
Chcę mock metodę klienta EC2: desribe_tags(), która mówi, że jest pyton:
<bound method EC2.describe_tags of <botocore.client.EC2 object at 0x7fd98660add0>>
najdalej stałam jest importowanie botocore w moim pliku testowego i starając:
mock.patch(Cleaner.botocore.client.EC2.describe_tags)
która nie z:
AttributeError: 'module' object has no attribute 'EC2'
Jak mogę sfałszować tę metodę?
Cleanup wygląda następująco:
import boto3
class cleaner(object):
def __init__(self):
self.ec2_client = boto3.client('ec2')
Przedmiotem ec2_client jest ten, który ma desribe_tags() metoda. Jest to obiekt botocore.client.EC2, ale nigdy nie importuję bezpośrednio botocore.
Wewnątrz modułu oczyszczania. Jak dokładnie importujesz EC2, aby go użyć? Z jego wyglądu robisz coś takiego jak "import boto3". Dobrze? Podejrzewam więc, że twoje łatanie powinno wyglądać jak "Cleanup.boto3.EC2". Jeśli nadałeś nazwę modułowi "Oczyszczanie". Niektóre dodatkowe informacje na pewno by pomogły. – idjaw
Próbka modułu dodanego –
@JeffTang znalazłeś rozwiązanie? Szukam czegoś podobnego! – ptimson