Blog

So erstellen Sie Python-Unit-Tests für AWS mit dem botocore stubber

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 16, 2025
2 Minuten

Obwohl Sie mit dem botocore Stubber Python-Unit-Tests für AWS erstellen können, ist die Verwendung ziemlich schwierig. Sie müssen die Anfragen und Antworten aufzeichnen, sie in Ihren Code einfügen und den Stub damit konfigurieren. In diesem Blog stelle ich Ihnen den botocore-stubber-recorder vor, mit dem dies ziemlich einfach ist.

Wie kann ich alle AWS API-Aufrufe aufzeichnen?

Die Aufzeichnung aller AWS API-Aufrufe ist wirklich einfach. Erstellen Sie einfach einen Rekorder für die Sitzung, wie unten gezeigt:

import boto3
from botocore_stubber_recorder import BotoRecorder

session = boto3.session.Session()
recorder = BotoRecorder(session)
# ... do your thing with the session
for index, call in enumerate(recorder.calls):
   print(f"call {index +1}: {call.service_name}:{call.operation}")

Erzeugen Sie Unit-Tests für aufgezeichnete AWS-Anrufe

Sie verwenden die aufgezeichneten Anrufe, um einen Einheitstest zu erstellen, wie folgt:

from botocore_stubber_recorder import UnitTestGenerator

generator = UnitTestGenerator(name="my_example",directory="./tests")
generator.generate(recorder, anonimize=True)

Dadurch wird die folgende Dateistruktur erzeugt:

tests
└── my_example
    ├── __init__.py
    ├── base.py
    ├── call_00001_describe_regions
    │   └── __init__.py
    ├── call_00002_describe_parameters
    │   └── __init__.py
    ├── call_00003_...
    │   └── __init__.py
    └── test_my_example.py

Die base.py enthält eine Basis-Unit-Testklasse, die den Stub mit allen aufgezeichneten Aufrufen initialisiert. Beachten Sie, dass die base.py und die Anrufverzeichnisse bei jeder Generierung überschrieben werden. Die enthält eine Beispiel-Testimplementierung, die Sie in einen tatsächlichen Test umwandeln müssen. Der generierte Test testet lediglich, dass der generierte Stub.

Führen Sie den generierten Test aus

Sie können den generierten Test bereits ausführen:

cd tests
python -munittest my_example/test_my_example.py
WARNING:root:TODO: replace MyExampleUnitTest.test_my_example with the actual test. This just tests the generated code.
.
----------------------------------------------------------------------
Ran 1 test in 0.092s

OK

Stellen Sie sicher, dass Sie den Test in tests/my_example/test_my_example.py in einen tatsächlichen Unit-Test für Ihren Code ändern.

alles auf einmal

Um den Unit-Test in einem einzigen Befehl aufzuzeichnen und zu generieren, verwenden Sie:

import boto3
from botocore_stubber_recorder import BotoRecorderUnitTestGenerator

session = boto3.session.Session()
with BotoRecorderUnitTestGenerator("my_example", session) as generator:
    ## do your thing with the session

die Bibliothek installieren

Um die Bibliothek in Ihrer Umgebung zu installieren, geben Sie ein:

pip install botocore-stubber-recorder

Fazit

Der botocore-stubber-recorder macht es sehr einfach, Unit-Tests für Python-Code zu erstellen, der AWS-Services aufruft. Bild von jplenio aus Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.