Fermer

décembre 20, 2024

Rapports complets avec Pytest / Blogs / Perficient

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.

Image9

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. Rapport

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.

  1. Installez les packages nécessaires :
    bash
    pip install selenium pytest pytest-html
    

  2. 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.

  1. Installez pytest-html :
    bash
    pip install pytest-html
    

  2. 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
    
  3. 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 :

  1. 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
    

  2. 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.

  1. Installez le plugin Allure et Pytest :
    bash
    
    pip install allure-pytest

  2. 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