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

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
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.
Unsere Ideen
Weitere Blogs
Contact


