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
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
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
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.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()