Bonjour à tous. Déjà ce mois-ci , le cours d' ingénieur Python QA commence à OTUS. En prévision du début de ce cours, nous partageons avec vous la traduction de matériel intéressant.

Presque tous les principaux langages de programmation ont des cadres pour les tests BDD , et Python ne fait pas exception. Et en fait, il en a plusieurs! Alors, comment les comparez-vous et lequel est le meilleur? Essayons de le comprendre.
se comporter
se comporter est l' un des frameworks python BDD les plus populaires. Malgré le fait qu'il ne fait pas officiellement partie du projet Cucumber , sa fonctionnalité est assez similaire au cadre Cucumber.
Sources:
Le logo

Avantages:
- Prend pleinement en charge la langue Gherkin;
- La fonctionnalité de l'environnement et des luminaires facilite l'installation et le retrait;
- Il y a intégration avec Django et Flask;
- Populaire auprès des pythonistes BDD;
- Bonne documentation et manuels;
- Il existe un support pour PyCharm Professional Edition .
Inconvénients:
- Il n'y a pas de support pour l'exécution parallèle, cela nécessite un cadre de comportement parallèle distinct;
- se comporter est un cadre autonome;
- Le partage des étapes entre les fichiers de fonctionnalités peut être gênant.
pytest-bdd
pytest-bdd est un plugin pytest qui permet aux utilisateurs d'écrire des tests sous forme de fichiers de fonctionnalités Gherkin au lieu de fonctions de test. Puisqu'il est intégré à pytest, il peut fonctionner avec n'importe quel autre plugin pytest, tel que pytest-html pour créer de beaux rapports et pytest-xdist pour les tests parallèles. Il utilise également des appareils pytest pour injecter des dépendances.
Sources:
Le logo

Avantages:
- Entièrement compatible avec pytest et ses principaux plugins;
- Vous pouvez profiter de tous les avantages de la communauté pytest;
- Les appareils sont un excellent moyen de gérer le contexte entre les étapes;
- Les tests peuvent être filtrés et exécutés avec d'autres tests Pytest;
- Les définitions d'étape et de crochet peuvent être facilement partagées à l'aide de conftest.py;
- Les données tabulaires peuvent être mieux traitées pour les tests basés sur les données ;
- Excellente documentation et tutoriels en ligne;
- Il existe un support pour PyCharm Professional Edition .
Inconvénients:
- Les modules de définition d'étape doivent avoir des déclarations explicites pour les fichiers d'entités (via «@scenario» ou la fonction «scénarios»);
- Le plan de scénario doit être traité différemment.
radis
radish est un framework BDD mis en évidence: il ajoute une nouvelle syntaxe au langage Gherkin. Les fonctionnalités de langage telles que les boucles de script, les prérequis de script et les constantes rendent le radis de Gherkin plus programmatique pour les cas de test.
Sources:
Le logo

Avantages:
- Les extensions de langage Gherkin permettent aux testeurs de mieux écrire les tests;
- Site Web, documentation et logo - tout est en place;
- Les fichiers de fonctionnalités et les définitions d'étapes sont très clairs.
Inconvénients:
- Il s'agit d'un framework autonome avec un nombre limité d'extensions;
- Les puristes BDD peuvent ne pas aimer l'ajout de la syntaxe de Gherkin.
laitue
La laitue est un autre framework BDD Python «végétal» connu depuis plusieurs années. Cependant, son site et son code n'ont pas été mis à jour depuis longtemps.
Sources:
Logo:

Avantages:
- Code simple
- Vérifié et bon.
Inconvénients:
- Fonctionnalités moins riches que dans d'autres cadres;
- Il ne semble pas avoir de soutien actif en cours.
rafraîchir
freshen est l' un des tout premiers frameworks pour les tests BDD en Python. Il était un plugin pour le nez . Cependant, freshen et nose ne sont plus pris en charge, et leur page de documentation indique clairement l'utilisation d'autres frameworks.
Recommandations
Aucun des cadres ci-dessus n'est parfait, mais beaucoup d'entre eux présentent des avantages importants. En général, je recommanderais d'utiliser pytest-bdd, car il présente tous les avantages des points forts de pytest. Je crois que pytest est l'un des meilleurs frameworks pour tester dans n'importe quelle langue en raison de sa concision, de ses fixtures, assertes et plugins. L'enquête Python Developers Survey 2018 a révélé que pytest est le cadre de test le plus populaire pour Python. Malgré le fait que pytest-bdd ne semble pas aussi poli que le comportement, je crois que certains TLC de la communauté open source peuvent résoudre ce problème.
Et quelques autres recommandations:
- Utilisez Behave si vous avez besoin d'une expérience de développement fiable et propre et d'une grande communauté.
- Utilisez pytest-bdd si vous avez besoin d'intégration avec d'autres plugins qui contiennent déjà un tas de tests pytest, ou si vous devez exécuter des tests en parallèle.
- Utilisez le radis si vous voulez plus de contrôle logiciel sur les tests au niveau de Gherkin.
- Ne pas utiliser de laitue et rafraîchir.
Quel est votre framework BDD préféré? Veuillez partager dans les commentaires!