Автоматическое тестирование веб-приложений на Python: pytest с Selenium WebDriver – руководство для начинающих
Привет! Погружаемся в мир автотестов с Python, Selenium и pytest!
Автоматизация тестов: экономия времени и повышение качества!
Зачем автоматизировать тестирование веб-приложений?
Ручное тестирование отнимает кучу времени и сил, а автотесты на Python с Selenium позволяют быстро проверять работоспособность вашего веб-приложения после каждого изменения кода. Это как страховка от багов, которые могут проскочить при ручном тестировании. Представьте, что 70% багов выявляются на ранних стадиях благодаря автотестам! Это снижает затраты на исправление и повышает качество продукта.
Обзор Selenium и pytest: что это и почему они важны
Selenium – это инструмент для автоматизации действий в браузере, имитирующий действия пользователя. Pytest – фреймворк для запуска и организации тестов на Python, известный своей простотой и гибкостью. Вместе они образуют мощный союз для автотестирования веб-приложений. Selenium позволяет управлять браузером, а pytest – удобно запускать тесты и получать отчеты.
Преимущества использования Python для автоматизации тестирования
Python – это простой в изучении и мощный язык программирования с огромным количеством библиотек. Для автоматизации тестирования Python предлагает лаконичный синтаксис, что повышает читаемость тестов. Согласно исследованиям, Python выбирают около 60% тестировщиков из-за его простоты и богатой экосистемы, включающей Selenium и pytest. Это ускоряет разработку и поддержку автотестов.
Необходимые инструменты и установка Selenium Python
Готовим среду: Python, Selenium, pytest и ChromeDriver!
Установка Python и pip
Первым делом нужно установить Python. Скачайте последнюю версию с официального сайта python.org. Убедитесь, что при установке отметили галочку “Add Python to PATH”, чтобы Python был доступен из командной строки. Pip – это менеджер пакетов Python, который обычно устанавливается вместе с Python. Чтобы проверить, установлен ли pip, выполните `pip –version` в командной строке.
Установка Selenium: `pip install selenium`
После установки Python и pip, установим Selenium. Откройте командную строку или терминал и выполните команду `pip install selenium`. Эта команда скачает и установит последнюю версию Selenium из PyPI (Python Package Index). Убедитесь, что установка прошла успешно, выполнив команду `pip show selenium`. Вы должны увидеть информацию об установленной версии Selenium. Это базовый шаг к автоматизации!
Установка pytest: `pip install pytest`
Теперь установим pytest, наш фреймворк для тестирования. В командной строке или терминале выполните `pip install pytest`. Как и в случае с Selenium, для проверки успешной установки выполните `pip show pytest`. Вы увидите информацию о версии и других деталях установленного pytest. Pytest позволит нам легко организовывать и запускать наши Selenium тесты, предоставляя гибкие возможности для настройки и отчетов.
Настройка WebDriver Chrome Driver: скачивание и настройка пути
Chrome Driver – это связующее звено между Selenium и браузером Chrome. Скачайте ChromeDriver, совместимый с вашей версией Chrome, с сайта [https://chromedriver.chromium.org/downloads](https://chromedriver.chromium.org/downloads). После скачивания, добавьте путь к исполняемому файлу ChromeDriver в системную переменную PATH или укажите его при инициализации WebDriver в вашем Python-скрипте. Без этого Selenium не сможет управлять Chrome.
Основы pytest для тестирования веб-приложений
Pytest: структура тестов, фикстуры и запуск из командной строки.
Структура тестового файла в pytest
В pytest тестовые файлы обычно начинаются с префикса `test_` или суффикса `_test.py`. Функции, содержащие тесты, также должны начинаться с `test_`. Pytest автоматически обнаруживает и запускает все тесты, соответствующие этим соглашениям. Модули могут содержать несколько тестовых функций. Организуйте тесты в логические группы для лучшей читаемости и поддерживаемости. Например, `test_login.py` для тестов логина.
Написание первого теста с pytest
Давайте напишем простой тест с pytest. Создайте файл `test_example.py` и добавьте в него следующий код:
python
def test_passing:
assert True
Этот тест просто проверяет, что `True` равно `True`, и всегда будет проходить. Запустите этот тест, выполнив команду `pytest` в командной строке в каталоге, содержащем файл `test_example.py`. Pytest покажет результат выполнения теста.
Использование фикстур pytest для настройки и завершения тестов
Фикстуры в pytest – это функции, которые выполняются перед и/или после тестовых функций. Они используются для подготовки тестовой среды (например, открытие браузера) и очистки после тестов (например, закрытие браузера). Фикстуры объявляются с помощью декоратора `@pytest.fixture`. Пример: `@pytest.fixture def browser: # setup; yield browser; # teardown`. Фикстуры помогают избежать дублирования кода и делают тесты более читаемыми.
Запуск тестов pytest из командной строки
Для запуска тестов pytest из командной строки просто перейдите в каталог с вашими тестовыми файлами и выполните команду `pytest`. Pytest автоматически обнаружит и запустит все тесты в этом каталоге и подкаталогах. Вы можете использовать различные опции, например, `-v` для подробного вывода или `-k
Selenium WebDriver Python примеры: взаимодействие с веб-элементами
Ищем элементы, кликаем и вводим текст: примеры для старта!
Инициализация WebDriver Chrome Driver
Для начала работы с Selenium нужно инициализировать WebDriver. Это делается следующим образом:
python
from selenium import webdriver
driver = webdriver.Chrome(‘/путь/к/chromedriver’)
driver.get(“https://www.example.com”)
Замените `/путь/к/chromedriver` на фактический путь к вашему ChromeDriver. `driver.get` открывает указанный URL в браузере. Инициализация WebDriver – это как завести машину перед поездкой.
Поиск веб-элементов: find_element_by_* методы
Selenium предлагает различные методы для поиска веб-элементов на странице: `find_element_by_id`, `find_element_by_name`, `find_element_by_xpath`, `find_element_by_css_selector`, `find_element_by_class_name` и другие. Например:
python
element = driver.find_element_by_id(“login_button”)
Этот код ищет элемент с `id=”login_button”`. `find_element` возвращает первый найденный элемент, а `find_elements` – список всех найденных элементов. XPath и CSS-селекторы дают гибкость в поиске сложных элементов.
Взаимодействие с элементами: ввод текста, клики, отправка форм
После того, как элемент найден, с ним можно взаимодействовать. Для ввода текста используйте метод `send_keys`:
python
element.send_keys(“[email protected]”)
Для клика по элементу используйте `click`:
python
element.click
Для отправки формы используйте `submit` (обычно вызывается на элементе `