Интеграция Selenium с фреймворками тестирования

Selenium можно интегрировать с несколькими фреймворками тестирования, такими как unittest и pytest, чтобы обеспечить более структурированное управление тестовым кодом и создание отчётов о тестировании.


иunittestИнтегрирование

unittestявляется фреймворком тестирования в стандартной библиотеке Python, предоставляющим богатые методы утверждений и подходы к организации тестов.

Мы можем интегрировать Selenium сunittestдля написания структурированных тест-кейсов.

Базовая структура

Ниже приведён простой пример Selenium сunittestпример интеграции:

Пример

import unittest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import С помощью

class TestGoogleSearch(unittest.TestCase):

    def setUp(self):
        # Установите правильный путь к драйверу
        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()

Объяснение кода

  • setUpМетод: выполняется перед каждым тестовым случаем для инициализации тестовой среды. Здесь мы запускаем браузер и открываем домашнюю страницу Google.
  • test_searchМетод: Это тестовый случай, используемый для проверки функциональности поиска Google. Мы находим поле поиска, вводим "Selenium" и отправляем поиск. Наконец, мы проверяем, содержит ли заголовок страницы "Selenium".
  • tearDownМетод: выполняется после каждого тестового случая для очистки тестовой среды. Здесь мы закрываем браузер.

Запуск тестов

Вы можете запустить тесты с помощью следующей команды:

python -m unittest test_baidu_search.py

иpytestИнтегрирование

pytest— это ещё один популярный фреймворк для тестирования на Python, который предоставляет более краткий синтаксис и более мощные возможности. Мы можем интегрировать Selenium сpytestИнтегрирование

Базовая структура

Ниже приведён простой пример Selenium сpytestпример интеграции:

Пример

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import С помощью

@pytest.fixture
def browser():
    # Установите правильный путь к драйверу
    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

Объяснение кода

  • browserФикстура: Этоpytestфикстура, используемая для запуска браузера перед выполнением каждого тест-кейса и закрытия браузера после выполнения тест-кейса.
  • test_baidu_searchФункция: Это тест-кейс, используемый для проверки функциональности поиска Google. Мы находим поле поиска, вводим "Selenium" и отправляем поисковый запрос. В конце мы проверяем, содержит ли заголовок страницы "Selenium".

Запуск тестов

Вы можете запустить тесты с помощью следующей команды:

pytest test_baidu_search.py

Генерация отчётов о тестировании

В автоматизированном тестировании генерация отчётов о тестировании очень важна. Мы можем использоватьpytest-htmlплагин для генерации отчётов о тестировании в формате HTML.

Установкаpytest-html

Вы можете установитьpytest-htmlплагин:

Пример

pip install pytest-html

Генерация отчётов о тестировании

При запуске тестов вы можете сгенерировать отчёт о тестировании в формате HTML с помощью следующей команды:

pytest --html=report.html

Сгенерированныйreport.htmlфайл будет содержать подробные результаты тестирования, включая пройденные тест-кейсы, неуспешные тест-кейсы и информацию об ошибках.

Тестовый код

Selenium 4 представляет множество новых возможностей, таких как относительные локаторы, улучшенное управление окнами, улучшенная поддержка DevTools и т. д.:

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import С помощью
from selenium.webdriver.common.keys import Keys

def test_baidu_search():
    # Установите правильный путь к драйверу
    service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(service=service, options=options)

    # Откройте главную страницу Baidu
    driver.get("https://www.baidu.com")

    # Найдите поле поиска и введите ключевое слово
    search_box = driver.find_element(By.NAME, "wd")  # Имя поля поиска Baidu — "wd"
    search_box.send_keys("Selenium")

    # Найдите кнопку поиска и нажмите на неё
    search_button = driver.find_element(By.ID, "su")  # id кнопки поиска Baidu — "su"
    search_button.click()

    # Дождитесь завершения загрузки страницы (простое ожидание; в реальных проектах рекомендуется явное ожидание)
    driver.implicitly_wait(5)

    # Проверьте, содержит ли страница результатов поиска ключевое слово
    assert "Selenium" in driver.page_source

    # Закройте браузер
    driver.quit()

# Запустите тесты
if __name__ == "__main__":
    test_baidu_search()
Другие расширения