Интеграция Selenium с фреймворками тестирования
Selenium можно интегрировать с несколькими фреймворками тестирования, такими как unittest и pytest, чтобы обеспечить более структурированное управление тестовым кодом и создание отчётов о тестировании.
иunittestИнтегрирование
unittestявляется фреймворком тестирования в стандартной библиотеке Python, предоставляющим богатые методы утверждений и подходы к организации тестов.
Мы можем интегрировать Selenium сunittestдля написания структурированных тест-кейсов.
Базовая структура
Ниже приведён простой пример Selenium с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пример интеграции:
Пример
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плагин:
Пример
Генерация отчётов о тестировании
При запуске тестов вы можете сгенерировать отчёт о тестировании в формате HTML с помощью следующей команды:
pytest --html=report.html
Сгенерированныйreport.htmlфайл будет содержать подробные результаты тестирования, включая пройденные тест-кейсы, неуспешные тест-кейсы и информацию об ошибках.
Тестовый код
Selenium 4 представляет множество новых возможностей, таких как относительные локаторы, улучшенное управление окнами, улучшенная поддержка DevTools и т. д.:
Пример
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()