Si vous vous êtes dit : « Hmm… avec quel langage de programmation devrais-je commencer mon voyage de test ? ». – Python est votre réponse. Mais ce n’est pas seulement pour les débutants ! Dans une enquête récente que j’ai réalisée sur LinkedIn, nous pouvons voir que même parmi les programmeurs expérimentés, près de 35% ont voté que Python est leur langage de programmation le plus préféré (bien que pas trop loin devant le favori de tous les temps, Java, qui arrive en 2ème position avec 32%).
Au fil des ans, Python a effectivement gagné du terrain à la fois parmi les testeurs et les développeurs et c’est le langage de programmation qui connaît la croissance la plus rapide (comme nous pouvons le voir dans le tableau des tendances de Stack Overflow ci-dessous), et nous savons tous ce que cela signifie… Popularité = pertinence !
À la fin de cet article, mon objectif est de vous aider à voir à quel point le langage de programmation Python est puissant, et quel cadre de test Python est le mieux adapté aux besoins de votre projet.
Qu’est-ce qui est si génial à propos de Python pour l’automatisation des tests ?
Python est un langage de programmation open-source qui a été publié pour la première fois en 1991 avec l’intention de fournir un langage de programmation intuitif, simple, lisible par l’homme, élégant et moins encombré pour travailler. Et quand il s’agit de tests, de telles qualités sont indispensables, surtout lorsque nous avons des testeurs manuels dans l’équipe (qui n’ont pas nécessairement des compétences en programmation) qui sont maintenant en transition vers l’automatisation et peuvent profiter de la courbe d’apprentissage rapide de Python pour écrire des scripts rapidement.
Il y a pas mal de raisons qui expliquent pourquoi la popularité de Python a augmenté dans le domaine de l’automatisation des tests et pourquoi il est considéré comme l’un des meilleurs choix pour l’automatisation des tests. Parmi ces raisons, vous trouverez : Le Zen de Python (19 principes directeurs pour la philosophie de conception de Python), convivial pour les débutants mais aussi puissant pour les experts, il est à la fois orienté objet et fonctionnel, il possède une riche bibliothèque de paquets pour les tests, une communauté mondiale forte, et bien plus encore ! Je recommande d’en lire plus à ce sujet sur le génial blog AutomationPanda.
Le bon framework de test Python pour vous
Avec l’utilisation croissante de Python, la popularité des frameworks de test basés sur Python augmente également. Au début, il peut être un peu difficile de savoir lequel choisir parmi toute la richesse des outils existants, car chacun a ses avantages et ses inconvénients. Ceci étant dit, chaque projet et chaque organisation a des exigences et des limites différentes, et nous devons donc les prendre en considération lors de la sélection de l’outil qui nous conviendra le mieux. Je recommande la lecture de ces excellents articles sur la façon de choisir le bon outil pour vous :
- Comment sélectionner le bon outil d’automatisation des tests
- Comment sélectionner le meilleur outil – Processus de recherche
- Critères de sélection des bons outils de test fonctionnel
Et bien sûr – pourquoi les listes de pour et de contre existent-elles, si ce n’est pour nous aider à obtenir des conseils supplémentaires sur nos outils préférés, le tout en un seul endroit ! 😉 Donc, plongeons profondément dans le top 8 des frameworks de test Python existants, et explorons à la fois leurs avantages et leurs inconvénients afin que vous puissiez vous rapprocher d’autant plus du choix du framework de test Python idéal pour vos besoins.
Avantages et inconvénients des 8 meilleurs frameworks de test Python
- Robot Framework
- Pytest
- TestProject
- PyUnit (Unittest)
- Nose2
- Behave
- Lettuce
- Testify
- Conclusion
.
Robot Framework (RF)
Robot Framework (RF) est un cadre d’automatisation de test open source pour les tests d’acceptation, le développement piloté par les tests d’acceptation (ATDD) et l’automatisation des processus robotiques (RPA). Son noyau est implémenté en Python, mais peut également fonctionner sur Jython (implémentation Java de Python) et IronPython (Python pour le framework .NET). Pour l’exécuter, vous devrez installer la version 2.7.14 de Python ou une version supérieure.
Pros
- Bâti sur l’approche Keyword-driven testing (KDT), nous permettant ainsi de créer facilement des cas de test en utilisant des mots-clés lisibles par l’homme (aucune expérience de codage requise).
- Support de tous les systèmes d’exploitation (Windows, Linux ou MacOS), et de toutes les applications (web, mobiles et applications de bureau).
- Fournit des données de rapport HTML claires et conviviales (y compris des captures d’écran).
- Riche écosystème avec beaucoup d’API qui en font un cadre hautement extensible et permettant d’intégrer tout autre outil tiers.
- Grand soutien communautaire et ressources en ligne.
Cons
- Les tests parallèles ne sont pas supportés en sortie de boîte, mais ils peuvent être réalisés via Selenium Grid ou via Pabot (un exécuteur parallèle pour RF).
- Pour le bon et le mauvais, il vous oblige à travailler selon une méthodologie prédéfinie, La courbe d’apprentissage initiale pourrait être un peu plus longue que d’habitude pour les rookies
- Créer des mots-clés génériques pourrait prendre plus de temps que de simplement écrire des tests codés
- Pas facile de personnaliser les rapports.
- Ne dispose pas d’une construction if/else réelle, mais il existe plusieurs façons d’obtenir le même effet (comme on peut l’explorer dans leur documentation officielle)
Bottom line : Si vous cherchez à mettre en œuvre une approche de cadre axée sur les mots-clés qui permettra aux testeurs manuels et aux analystes d’affaires de créer des tests d’automatisation, RF est la solution pour vous, fournissant une variété d’extensions & bibliothèques et facile à utiliser. Cependant, si vous êtes à l’affût pour développer des scénarios complexes, car vous aurez besoin de faire quelques personnalisations qui ne sont pas intégrés au cadre.
Pytest
Pytest est un cadre de test open-source qui est probablement sur des cadres de test Python les plus largement utilisés là-bas. Pytest est supporte les tests unitaires, les tests fonctionnels et les tests d’API également. Pour l’exécuter, vous aurez besoin de la version 3.5 de Python ou d’une version supérieure.
Pros
- Permet des suites de tests compactes et simples.
- Est hautement extensible en utilisant des plugins, tels que : pytest-randomly, pytest-cov, pytest-django, pytest-bdd.
- Vous pouvez également ajouter le plugin pytest html à votre projet pour imprimer des rapports HTML avec une simple option de ligne de commande.
- Peut exécuter des tests en parallèle en utilisant un plugin Pytest pytest-xdist. Vous pouvez en lire plus ici aussi.
- Possède une très grande communauté.
- Porte des fixtures vous aidant à couvrir toutes les combinaisons de paramètres sans réécrire les cas de test, et sont un excellent moyen de gérer le contexte entre les étapes.
Cons
- La compatibilité n’est pas clé pour Pytest, car bien que vous puissiez facilement écrire des cas de test avec Pytest, vous ne serez pas en mesure de les utiliser dans tout autre cadre de test en raison de l’utilisation des routines uniques de Pytest.
TestProject
TestProject est un framework d’automatisation complet 100% GRATUIT avec des rapports en nuage. En utilisant TestProject, vous pouvez facilement développer l’automatisation des tests pour les mobiles, le web ou les objectifs génériques avec le SDK open source Python. Il supporte Python version 3.6 ou supérieure, et supporte les deux frameworks Pytest et Unittest. TestProject inclut toutes les dépendances requises dans le cadre de l’exécutable d’agent unique multiplateforme (Vous pouvez regarder cet enregistrement de webinaire pour commencer).
Pros
- Exécutable d’agent unique qui inclut toutes les bibliothèques tierces nécessaires pour exécuter et développer l’automatisation des tests pour les mobiles, le web et les tests génériques.
- FREE Rapports automatiques basés sur le cloud au format HTML/PDF (y compris les captures d’écran).
- Historique d’exécution accessible via l’API RESTful.
- Toujours à jour avec les dernières versions stables des pilotes Selenium/Appium.
- Single SDK pour les tests Web, Android, iOS et génériques.
- Capacités intégrées d’exécution des tests et de création de rapports.
- Support multiplateforme pour Mac, Windows, Linux et Docker.
- Grande communauté et support : forum, blog et chat en direct intégré.
Cons
- L’agent peut exécuter des tests un par un, donc pour des tests parallèles, il faudrait utiliser des agents Docker.
- Les rapports sont disponibles uniquement sur le cloud TestProject, pour le stocker localement vous devrez télécharger un rapport PDF ou utiliser l’API RESTful.
- L’agent a besoin d’une connexion internet pour exécuter/exécuter les tests.
Bottom line : Si vous recherchez un framework unique qui couvre l’ensemble de vos efforts d’automatisation de bout en bout, alors TestProject est définitivement celui qu’il vous faut et convient parfaitement aux équipes aux compétences mixtes, des débutants aux experts expérimentés en automatisation.
PyUnit (Unittest)
PyUnit (Unittest) est un framework de tests unitaires pour Python qui a été inspiré par Jurnit. C’est le cadre de test Python par défaut qui sort de la boîte avec le paquet Python, et donc celui avec lequel la plupart des développeurs commencent leurs tests.
Pros
- Puisqu’il fait partie de la bibliothèque Python standard, il n’y a pas de modules supplémentaires à installer – il sort de la boîte avec le paquet Python.
- Offre une exécution de cas de test simple et flexible.
- Génération rapide de rapports de test, à la fois des rapports XML et unittest-sml-reporting.
Cons
- L’intention du code de test devient parfois peu claire, car il supporte l’abstraction.
- Une énorme quantité de code boilerplate est nécessaire.
- Puisque basé sur Junit, la méthode de nommage camelCase est en utilisation, au lieu de la convention de nommage snake_case de Python.
Nose2
Nose2 est un successeur de Nose et est fondamentalement PyUnit (Unittest), mais avec des plugins. Nose2 étend PyUnit au-delà de ses fonctionnalités avec divers plugins qui ajoutent un support pour l’exécution de tests, la découverte de tests, les décorateurs, les fixtures, la paramétrisation, etc.
Pros
- Facile à démarrer car il étend le cadre PyUnit (Unittest) qui sort de la boîte avec la bibliothèque Python.
- Inclut un grand nombre de plugins intégrés qui peuvent rendre vos tests plus rapides et plus faciles.
- Autorise les tests parallèles à l’aide du plugin mp.
- Collecte les tests automatiquement, tant que vous suivez quelques directives simples pour organiser votre bibliothèque et votre code de test.
Cons
- Manque de documentation étendue qui peut vous freiner si vous débutez.
- Pas si activement maintenu contrairement à d’autres frameworks.
Bottom line : Si vous utilisez déjà PyUnit, vous pourriez aussi bien donner une chance à Nose2 et explorer comment il étend PyUnit.
Behave
Behave est l’un des cadres de test BDD (behavior-driven development) Python les plus populaires. Bien qu’il ne fasse pas officiellement partie du projet Cucumber, il fonctionne de manière très similaire aux frameworks Cucumber.
Pros
- Permet d’écrire des cas de test dans un langage lisible, ce qui conduit à une collaboration facile entre les équipes ayant des fonctionnalités similaires.
- Une grande quantité de documentation et de support sont disponibles pour aider à démarrer.
- Porte entièrement le langage Gherkin – ainsi la création de fichiers de fonctionnalités ne nécessite aucune connaissance technique.
- A des intégrations Django et Flask.
Cons
- Il n’y a pas de support pour l’exécution parallèle.
- Uniquement pour le test de la boîte noire.
Bottom line : Si votre équipe suit une approche BDD, que vous avez des connaissances BDD antérieures (telles que Cucumber, SpecFlow, etc) et que vous recherchez des tests de boîte noire – vous devriez certainement vérifier Behave. Vous devriez également explorer d’autres frameworks BDD Python tels que : Pytest-bdd, Lettuce (qui sera décrit plus loin), Radish et plus encore dans cet article de comparaison des frameworks de test BDD Python. Si vous avez besoin de plus que des tests de boîte noire, alors vous devriez regarder ailleurs.
Lettuce
Lettuce est un autre framework BDD Python et il est basé sur Cucumber. Nécessite Python 2.7.14 ou plus.
Pros
- Supporte le langage Gherkin, permettant ainsi même aux membres non techniques de l’équipe de créer facilement des tests en utilisant le langage naturel.
- Similaire à Behave, il est utilisé principalement pour les tests de boîte noire mais peut être utilisé pour plus de types de tests. Par exemple, Lettuce peut tester divers comportements et interactions de serveurs et de bases de données.
Cons
- Perte une partie de la richesse des fonctionnalités des autres frameworks, donc plus adapté aux petits projets.
- Son support et sa documentation ne semblent pas être maintenus.
- Requiert une communication dédiée entre toutes les parties prenantes du projet : dev, QA et managers afin de s’assurer que la mise en œuvre est réussie.
Bottom line : Si vous avez un petit projet BDD, Lettuce est une excellente option pour la création de tests faciles et en langage naturel entre tous les membres de l’équipe.
Testify
Testify est conçu pour remplacer les frameworks communs Unittest et Nose et possède des fonctionnalités avancées par rapport à l’Unittest standard.
Pros
- Utilisé pour les tests unitaires, les tests d’intégration et les tests système.
- Pour ceux qui sont familiers avec Unittest, Testify est très facile à prendre en main.
- Possède de nombreux plugins.
- Similaire à Nose2, Testify permet la découverte de tests.
- Simple syntaxe pour fixer la méthode.
Cons
- L’absence de documentation étendue, donc les débutants pourraient avoir besoin d’investir dans la recherche de ressources pertinentes.
- Les tests parallèles ne sont pas faciles à réaliser.
Bottom line : Si vous avez une expérience antérieure avec Unittest, il sera assez facile pour vous d’ajuster vos tests existants pour fonctionner avec Testify, donc il vaut vraiment la peine d’être vérifié.
Conclusion
Nous sommes arrivés à la fin de cette liste de comparaison de frameworks de test python, et il est maintenant temps de choisir celui qui correspond le plus à vos exigences.
Vous recherchez plus une approche BDD ? Est-ce que ce sont des tests unitaires que vous cherchez à réaliser ou plutôt des tests fonctionnels ? Votre équipe a-t-elle une expérience technique ou de codage, ou est-elle surtout composée de débutants ? Ces questions et bien d’autres sont celles que vous devez prendre en considération lorsque vous essayez de prendre une décision. Chacun des cadres ci-dessus a ses avantages ainsi que des inconvénients, et il n’y a pas une telle chose comme bon ou mauvais, mais plutôt approprié. Convient à vos propres besoins et aux exigences du produit.
J’espère que cet article a pu vous aider non seulement à comprendre à quel point Python est génial pour les tests d’automatisation, mais aussi vous aider dans votre voyage vers des tests Python faciles !
.