Hallo an alle. Bereits in diesem Monat beginnt der Python QA Engineer- Kurs bei OTUS. Im Vorgriff auf den Beginn dieses Kurses teilen wir Ihnen die Übersetzung von interessantem Material mit.

Fast alle wichtigen Programmiersprachen verfügen über Frameworks für BDD-Tests , und Python ist keine Ausnahme. Und tatsächlich hat er mehrere davon! Wie vergleichst du sie und welches ist das beste? Versuchen wir es herauszufinden.
benimm dich
Behavve ist eines der beliebtesten BDD-Python-Frameworks. Obwohl es nicht offiziell Teil des Cucumber- Projekts ist, ähnelt seine Funktionalität dem Cucumber-Framework.
Quellen:
Logo

Vorteile:
- Unterstützt voll und ganz die Gurkensprache;
- Die Funktionalität der Umgebung und der Geräte erleichtert die Installation und Entfernung.
- Es gibt eine Integration mit Django und Flask;
- Beliebt bei BDD-Pythonisten;
- Gute Dokumentation und Handbücher;
- PyCharm Professional Edition wird unterstützt .
Nachteile:
- Es gibt keine Unterstützung für die parallele Ausführung. Dies erfordert ein separates verhaltensparalleles Framework.
- Verhalten ist ein eigenständiges Framework.
- Das Teilen von Schritten zwischen Feature-Dateien kann problematisch sein.
pytest-bdd
pytest-bdd ist ein Pytest- Plugin, mit dem Benutzer Tests als Gherkin-Feature-Dateien anstelle von Testfunktionen schreiben können. Da es in pytest integriert ist, kann es mit allen anderen pytest-Plugins zusammenarbeiten, z. B. pytest-html zum Erstellen schöner Berichte und pytest-xdist zum parallelen Testen. Es werden auch Pytest-Fixtures verwendet, um Abhängigkeiten einzufügen.
Quellen:
Logo

Vorteile:
- Voll kompatibel mit pytest und seinen Haupt-Plugins;
- Sie können alle Vorteile der Pytest-Community genießen.
- Fixtures sind eine großartige Möglichkeit, den Kontext zwischen Schritten zu verwalten.
- Tests können gefiltert und zusammen mit anderen Pytest-Tests ausgeführt werden.
- Schritt- und Hook-Definitionen können einfach mit conftest.py geteilt werden.
- Tabellarische Daten können für datengesteuerte Tests besser verarbeitet werden .
- Hervorragende Online-Dokumentation und Tutorials;
- PyCharm Professional Edition wird unterstützt .
Nachteile:
- Schrittdefinitionsmodule müssen explizite Deklarationen für Feature-Dateien enthalten (über "@scenario" oder die Funktion "Szenarien").
- Der Szenarioplan sollte anders gehandhabt werden.
Rettich
Rettich ist ein hervorgehobenes BDD-Framework: Es fügt der Gherkin-Sprache eine neue Syntax hinzu. Sprachfunktionen wie Skriptschleifen, Skriptvoraussetzungen und Konstanten machen Gherkins Rettich für Testfälle programmatischer.
Quellen:
Logo

Vorteile:
- Mit den Spracherweiterungen für Gurken können Tester Tests besser schreiben.
- Website, Dokumentation und Logo - alles ist vorhanden;
- Feature-Dateien und Schrittdefinitionen sind sehr klar.
Nachteile:
- Es ist ein eigenständiges Framework mit einer begrenzten Anzahl von Erweiterungen.
- BDD-Puristen mögen die Hinzufügung von Gherkins Syntax möglicherweise nicht.
Salat
Salat ist ein weiteres „pflanzliches“ BDD-Python-Framework, das seit mehreren Jahren bekannt ist. Seine Site und sein Code wurden jedoch schon lange nicht mehr aktualisiert.
Quellen:
Logo:

Vorteile:
- Einfacher Code
- Verifiziert und gut.
Nachteile:
- Nicht so umfangreiche Funktionen wie in anderen Frameworks.
- Er scheint keine aktive laufende Unterstützung zu haben.
erfrischen
freshen ist eines der ersten Frameworks für BDD-Tests in Python. Er war ein Plugin für die Nase . Frische und Nase werden jedoch nicht mehr unterstützt, und auf der Dokumentationsseite wird eindeutig die Verwendung anderer Frameworks angegeben.
Empfehlungen
Keines der oben genannten Frameworks ist perfekt, aber viele von ihnen haben erhebliche Vorteile. Im Allgemeinen würde ich die Verwendung von pytest-bdd empfehlen, da es alle Vorteile der Stärken von pytest bietet. Ich glaube, dass pytest aufgrund seiner Prägnanz, Fixtures, Assertes und Plugins eines der besten Frameworks zum Testen in jeder Sprache ist. Die Umfrage der Python-Entwickler von 2018 ergab, dass pytest das beliebteste Testframework für Python ist. Trotz der Tatsache, dass pytest-bdd nicht so gut aussieht wie sich zu verhalten, glaube ich, dass einige TLCs aus der Open Source-Community dies beheben können.
Und noch ein paar Empfehlungen:
- Verwenden Sie verhalten, wenn Sie zuverlässige, saubere Entwicklungserfahrung und eine große Community benötigen.
- Verwenden Sie pytest-bdd, wenn Sie eine Integration mit anderen Plugins benötigen, die bereits eine Reihe von Pytest-Tests enthalten, oder wenn Sie Tests parallel ausführen müssen.
- Verwenden Sie Rettich, wenn Sie mehr Software-Kontrolle über Tests auf Gurkenebene wünschen.
- Verwenden Sie keinen Salat und erfrischen Sie ihn nicht.
Was ist Ihr Lieblings-BDD-Framework? Bitte teilen Sie in den Kommentaren!