Rapports complets avec Pytest / Blogs / Perficient

Lorsque vous exécutez des tests Selenium en Python, en particulier dans le cadre de grands projets, la possibilité de générer des rapports détaillés et lisibles est essentielle pour comprendre les résultats des tests, suivre les échecs et améliorer la gestion globale des tests. Dans cet article de blog, nous explorerons comment intégrer le reporting dans vos tests Selenium à l’aide de Pytestl’un des frameworks de test les plus populaires pour Python.
Pourquoi avons-nous besoin de rapports ?
Les rapports de test fournissent plus qu’un simple résumé indiquant si les tests ont réussi ou échoué. Ils aident les équipes :
- Suivez quels cas de test échouent et pourquoi.
- Consultez les journaux de test et les traçages pour obtenir des informations plus approfondies.
- Générez des rapports esthétiques et compréhensibles pour les parties prenantes.
- Intégrez-vous aux systèmes d’intégration continue (CI) pour afficher les résultats dans un format facilement consommable.
En tirant parti d’outils comme pytest-html, allure-pytestou pytest-splunkvous pouvez générer des rapports de test riches et exploitables qui améliorent considérablement le processus de débogage et fournissent des commentaires clairs.
Configuration de Pytest pour Selenium
Avant de nous lancer dans le reporting, définissons brièvement Sélénium avec Pytest pour un cas de test de base.
- Installez les packages nécessaires :
bash pip install selenium pytest pytest-html
- Exemple de test de base au sélénium :
from selenium import webdriver import pytest @pytest.fixture def driver(): driver = webdriver.Chrome(executable_path="/path/to/chromedriver") yield driver driver.quit() def test_open_google(driver): driver.get("https://www.google.com") assert "Google" in driver.title
Ce test de base lance Chrome, accède à Google et affirme que le mot « Google » apparaît dans le titre de la page.
Générer des rapports avec Pytest-HTML
L’un des moyens les plus simples de générer des rapports dans Pytest consiste à utiliser l’outil pytest-html plugin. Il produit des rapports HTML clairs et faciles à lire après l’exécution des tests. Voici comment l’intégrer à votre projet.
- Installez pytest-html :
bash pip install pytest-html
- Exécution de tests avec un rapport HTML : Vous pouvez générer un rapport HTML en exécutant Pytest avec l’option –html :
Pytest with the --html option: bash pytest --html=report.html
- Sortie du rapport : Après avoir exécuté les tests, le fichier report.html sera créé dans le répertoire courant. Ouvrez le fichier dans votre navigateur pour afficher un rapport bien structuré qui indique l’état de chaque test (réussite/échec), la durée du test et les journaux. Le rapport comprend :
- Résumé du test: Une section qui répertorie le nombre total de tests, réussis, échoués ou ignorés.
- Détails du scénario de test: Détails cliquables pour chaque scénario de test, y compris le nom du test, le résultat, la durée et les journaux des tests ayant échoué.
- Captures d’écran: Si vous capturez des captures d’écran lors de vos tests, elles seront automatiquement ajoutées au rapport (nous en reparlerons plus tard).
Ajout de captures d’écran pour les échecs de test
L’une des meilleures pratiques en matière d’automatisation des tests Selenium consiste à capturer captures d’écran lorsqu’un test échoue. Cela vous aide à diagnostiquer rapidement les problèmes en vous donnant une référence visuelle.
Voici comment capturer des captures d’écran dans vos tests Selenium et les ajouter à votre rapport HTML :
- Modifiez le code de test pour capturer des captures d’écran en cas d’échec :
import pytest from selenium import webdriver import os from datetime import datetime @pytest.fixture def driver(): driver = webdriver.Chrome(executable_path="/path/to/chromedriver") yield driver driver.quit() def take_screenshot(driver): timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") screenshot_dir = "screenshots" os.makedirs(screenshot_dir, exist_ok=True) screenshot_path = f"{screenshot_dir}/screenshot_{timestamp}.png" driver.save_screenshot(screenshot_path) return screenshot_path def test_open_google(driver): driver.get("https://www.google.com") assert "NonexistentPage" in driver.title # This will fail
- Mettez à jour le rapport pour inclure des captures d’écran : Pour vous assurer que la capture d’écran apparaît dans le rapport HTML, modifiez vos fonctions de configuration et de démontage de test pour capturer des captures d’écran lorsque le test échoue.
def pytest_runtest_makereport(item, call): if call.excinfo is not None: driver = item.funcargs.get("driver") screenshot_path = take_screenshot(driver) item.user_properties.append(("screenshot", screenshot_path))
Cela ajoutera une capture d’écran au rapport chaque fois qu’un test échoue, ce qui facilitera grandement le dépannage des problèmes.
Utiliser Allure pour les rapports avancés
Si vous avez besoin de fonctionnalités de création de rapports plus avancées, telles que des rapports interactifs ou une intégration avec des pipelines CI/CD, vous pouvez utiliser Séduire. Allure est un framework populaire qui fournit des rapports de test riches et interactifs avec de nombreuses options de personnalisation.
- Installez le plugin Allure et Pytest :
bash pip install allure-pytest
- Exécution de tests avec Allure : Pour générer un rapport Allure, exécutez les commandes suivantes :
bash pytest --alluredir=allure-results allure serve allure-results
Cela lancera un serveur local avec un magnifique rapport interactif.
Conclusion
L’intégration d’une structure de reporting robuste dans vos tests Selenium avec Python (et Pytest) est un excellent moyen d’obtenir des informations plus approfondies sur les résultats de vos tests, d’améliorer la fiabilité des tests et d’accélérer le processus de débogage. Que vous utilisiez pytest-html pour des rapports simples et rapides ou optez pour Séduire pour les rapports avancés et interactifs, la possibilité de visualiser les résultats de vos tests est essentielle pour maintenir des suites de tests automatisés de haute qualité.
Une fois les rapports mis en place, vous pouvez suivre plus efficacement la progression des tests, communiquer les résultats avec votre équipe et garantir que les problèmes sont identifiés et résolus rapidement.
Bons tests !
Source link