Intégration du framework de test Selenium

Selenium peut être intégré à plusieurs frameworks de test, tels que unittest et pytest, afin d'obtenir une gestion plus structurée du code de test et la génération de rapports de test.


etunittestIntégration

unittestest un framework de test de la bibliothèque standard Python, offrant de riches méthodes d'assertion et des approches d'organisation des tests.

Nous pouvons intégrer Selenium avecunittestpour écrire des cas de test structurés.

Structure de base

Ce qui suit est un exemple simple de Selenium avecunittestexemple d'intégration :

Exemple

import unittest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import En

class TestGoogleSearch(unittest.TestCase):

    def setUp(self):
        # Définir le chemin correct du pilote
        service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
        options = webdriver.ChromeOptions()
        driver = webdriver.Chrome(service=service, options=options)
        self.driver.get("https://www.baidu.com")

    def test_search(self):
        search_box = self.driver.find_element(By.NAME, "wd")
        search_box.send_keys("Selenium")
        search_box.submit()
        self.assertIn("Selenium", self.driver.title)

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

Explication de code

  • setUpMéthode: S'exécute avant chaque cas de test pour initialiser l'environnement de test. Ici, nous démarrons le navigateur et ouvrons la page d'accueil de Google.
  • test_searchMéthode: Il s'agit d'un cas de test utilisé pour tester la fonctionnalité de recherche Google. Nous trouvons la zone de recherche, saisissons "Selenium" et soumettons la recherche. Enfin, nous vérifions si le titre de la page contient "Selenium".
  • tearDownMéthode: S'exécute après chaque cas de test pour nettoyer l'environnement de test. Ici, nous fermons le navigateur.

Exécuter les tests

Vous pouvez exécuter les tests avec la commande suivante:

python -m unittest test_baidu_search.py

etpytestIntégration

pytestest un autre framework de test Python populaire qui offre une syntaxe plus concise et des fonctionnalités plus puissantes. Nous pouvons intégrer Selenium avecpytestIntégration

Structure de base

Ce qui suit est un exemple simple de Selenium avecpytestexemple d'intégration :

Exemple

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import En

@pytest.fixture
def browser():
    # Définir le chemin correct du pilote
    service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(service=service, options=options)
    yield driver
    driver.quit()

def test_baidu_search(browser):
    browser.get("https://www.baidu.com")
    search_box = browser.find_element(By.NAME, "wd")
    search_box.send_keys("Selenium")
    search_box.submit()
    assert "Selenium" in browser.title

Explication de code

  • browserFixture: Ceci est unepytestfixture, utilisée pour démarrer le navigateur avant chaque exécution de cas de test et fermer le navigateur après l'exécution du cas de test.
  • test_baidu_searchFonction: Il s'agit d'un cas de test utilisé pour tester la fonctionnalité de recherche Google. Nous trouvons la zone de recherche, saisissons "Selenium", et soumettons la recherche. Enfin, nous vérifions si le titre de la page contient "Selenium".

Exécuter les tests

Vous pouvez exécuter les tests avec la commande suivante:

pytest test_baidu_search.py

Générer des rapports de test

Dans les tests automatisés, la génération de rapports de test est très importante. Nous pouvons utiliserpytest-htmlplugin pour générer des rapports de test au format HTML.

Installationpytest-html

Vous pouvez installer lepytest-htmlplugin :

Exemple

pip install pytest-html

Générer des rapports de test

Lors de l'exécution des tests, vous pouvez générer un rapport de test au format HTML avec la commande suivante :

pytest --html=report.html

Le mot de passe généréreport.htmlLe fichier contiendra des résultats de test détaillés, y compris les cas de test réussis, les cas de test échoués et les informations d'erreur.

Code de test

Selenium 4 introduit de nombreuses nouvelles fonctionnalités, telles que les localisateurs relatifs, une meilleure gestion des fenêtres, un meilleur support de DevTools, etc. :

Exemple

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import En
from selenium.webdriver.common.keys import Keys

def test_baidu_search():
    # Définir le chemin correct du pilote
    service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(service=service, options=options)

    # Ouvrir la page d'accueil de Baidu
    driver.get("https://www.baidu.com")

    # Localiser la zone de recherche et saisir le mot-clé
    search_box = driver.find_element(By.NAME, "wd")  # Le nom de la zone de recherche Baidu est "wd"
    search_box.send_keys("Selenium")

    # Localiser le bouton de recherche et cliquer dessus
    search_button = driver.find_element(By.ID, "su")  # L'id du bouton de recherche Baidu est "su"
    search_button.click()

    # Attendre que la page ait fini de charger (attente simple ; une attente explicite est recommandée dans les projets réels)
    driver.implicitly_wait(5)

    # Vérifier si la page de résultats de recherche contient le mot-clé
    assert "Selenium" in driver.page_source

    # Fermer le navigateur
    driver.quit()

# Exécuter les tests
if __name__ == "__main__":
    test_baidu_search()
Autres extensions