L'écosystème Python propose plusieurs frameworks de tests comme Pytest, Unittest ou Nose. Pour transformer les résultats bruts de ces tests en rapports visuels, interactifs et détaillés, l'outil de référence est Allure-Python. Ce framework permet de structurer les résultats de tests avec des métadonnées enrichies, facilitant ainsi l'analyse des échecs et la communication avec les parties prenantes.
Installation et Prérequis
Comme Allure est basé sur Java pour la génération du rendu final, assurez-vous qu'un environnement JRE ou JDK est installé sur votre machine. Ensuite, installez le plugin correspondant à votre moteur de test via pip :
# Pour les utilisateurs de Pytest (recommandé)
pip install allure-pytest
# Pour Unittest
pip install allure-unittest
Configuration de l'exécution
Avec Pytest, l'intégration est immédiate. Il suffit de spécifier le dossier de destination des données temporaires lors du lancement de la commande :
pytest --alluredir=rapport_brut
Pour Unittest, l'enregistrement du plugin doit être explicite dans votre script de lancement :
import allure_unittest
from allure_commons.lifecycle import ALLURE_LIFECYCLE
# Enregistrement du plugin pour intercepter les événements de test
ALLURE_LIFECYCLE.plugin_manager.register(allure_unittest.AllureUnittest)
Enrichissement des métadonnées via décorateurs
Allure utilise des décorateurs pour ajouter du contexte métier et technique aux rapprots.
1. Documentation et Titres
Le décorateur @allure.title remplace le nom de la fonction par un titre lisible, tandis que @allure.description permet de détailler le scénario.
@allure.title("Vérification de la création de compte")
@allure.description("""
Ce test valide que l'inscription d'un nouvel utilisateur
fonctionne correctement avec une adresse email valide et
un mot de passe complexe.
""")
def test_inscription_nouveau_client():
pass
2. Organisation Hiérarchique
Les annotations @allure.feature et @allure.story permettent de classer les tests selon une structure de type "Feature -> User Story" dans le rapport final.
@allure.feature("Gestion du Panier")
class TestPanier:
@allure.story("Ajout d'article")
def test_ajouter_produit_au_panier(self):
pass
@allure.story("Suppression d'article")
def test_retirer_produit_du_panier(self):
pass
3. Niveaux de Sévérité
Vous pouvez prioriser vos tests avec @allure.severity. Les niveaux disponibles incluent blocker, critical, normal, minor, et trivial.
@allure.severity(allure.severity_level.CRITICAL)
def test_processus_paiement_cb():
# Test critique pour le business
pass
Gestion des étapes et captures d'écran
La granularité d'un rapport Allure dépend de l'utilisation des étapes (steps) et des pièces jointes (attachments).
Étapes de test dynamiques
Utilisez allure.step pour segmenter la logique interne d'une fonction de test.
def test_recherche_produit():
with allure.step("Saisie du mot-clé 'Smartphone' dans la barre de recherche"):
# Logique de saisie
pass
with allure.step("Validation et vérification des résultats"):
# Logique d'assertion
assert True
Ajout de pièces jointes
Il est possible d'attacher des fichiers (logs, JSON, images) au rapport, ce qui est crucial lors d'un échec.
def test_api_reponse():
donnees_reçues = {"id": 101, "status": "success"}
allure.attach(str(donnees_reçues), name="Reponse_JSON", attachment_type=allure.attachment_type.JSON)
# Capture d'écran (exemple avec Selenium/Playwright)
# allure.attach(driver.get_screenshot_as_png(), name="Erreur_Visuelle", attachment_type=allure.attachment_type.PNG)
Génération et visualisation du rapport
Une fois les tests terminés, les fichiers dans rapport_brut ne sont pas lisibles directement. Vous devez utiliser l'outil en ligne de commande Allure pour compiler le rapport HTML.
Visualisation temporaire :
allure serve rapport_brut
Cette commande lance un serveur local et ouvre automatiquement votre navigateur pour affichre les statistiques et les graphiques.
Génération d'un rapport statique :
allure generate rapport_brut -o rapport_final --clean
Le dossier rapport_final contiendra alors un site web statique consultable via n'importe quel navigateur (nécessite souvent un serveur web pour les accès fichiers locaux).
Fonctionnalités Supplémentaires
- Liens externes : Liez vos tests à des tickets JIRA ou de la documentation avec
@allure.link("http://jira.com/TICKET-1", name="TICKET-1"). - Environnement : Créez un fichier
environment.propertiesdans votre dossier de résultats pour inclure des informations sur l'OS, la version de l'application ou l'URL du serveur de test dans le rapport. - Historique : En conservant le dossier
historydes générations précédentes, Allure affiche automatiquement les tendances d'exécution (graphiques de succès/échec au fil du temps).