So verspotten Sie ein boto3-Client-Objekt / call

Ich versuche, eine bestimmte boto3-Funktion zu verspotten. Mein Modul Cleanup importiert boto3. Cleanup hat auch eine Klasse, "sauberer". Während der Initialisierung erstellt Cleaner einen ec2-Client:

self.ec2_client = boto3.client('ec2')

Ich möchte die ec2-Client-Methode desribe_tags () verspotten, die laut Python wie folgt lautet:

<bound method EC2.describe_tags of <botocore.client.EC2 object at 0x7fd98660add0>>

das weiteste, was ich bekommen habe, ist Botocore in meine Testdatei zu importieren und zu versuchen:

mock.patch(Cleaner.botocore.client.EC2.describe_tags)

was fehlschlägt mit:

AttributeError: 'module' object has no attribute 'EC2'

Wie verspotte ich diese Methode?

Cleanup sieht so aus:

import boto3
class cleaner(object):
    def __init__(self):
        self.ec2_client = boto3.client('ec2')

Das ec2_client-Objekt ist das Objekt mit der desribe_tags () -Methode. Es ist ein botocore.client.EC2-Objekt, aber ich importiere Botocore nie direkt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage