Ответ
Работал с фреймворками для разных уровней тестирования.
UI-тестирование (E2E):
- Selenium WebDriver: Для автоматизации действий в браузере. Писал стабильные селекторы (по
data-testid, CSS). Использовал Page Object Model (POM) для поддержки кода. - Cypress: Для современных веб-приложений. Ценю встроенный отладчик, автоматические ожидания и простую настройку.
API-тестирование:
- REST Assured (Java): Для комплексной проверки REST API (статус-коды, схема ответа, данные).
- Requests + Pytest (Python): Для гибких скриптов и интеграционных тестов.
- Postman/Newman: Для быстрого прототипирования запросов и запуска коллекций в CI.
Модульное и интеграционное тестирование:
- Pytest (Python): Основной фреймворк. Использовал фикстуры, параметризацию, плагины (например, для отчетов).
- JUnit/TestNG (Java): Для модульных тестов в Java-проектах.
Пример теста на Python (Pytest + Selenium WebDriver):
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
@pytest.fixture(scope="function")
def browser():
driver = webdriver.Chrome()
driver.implicitly_wait(5)
yield driver
driver.quit()
def test_user_login(browser):
"""Проверка успешного входа в систему."""
browser.get("https://app.example.com/login")
# Ввод учетных данных
browser.find_element(By.ID, "username").send_keys("test_user")
browser.find_element(By.ID, "password").send_keys("secure_pass")
browser.find_element(By.XPATH, "//button[@type='submit']").click()
# Явное ожидание и проверка успешного входа
welcome_message = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".welcome-banner"))
)
assert "Welcome, test_user!" in welcome_message.text
Интеграция: Настраивал запуск этих тестов в CI/CD (Jenkins, GitLab CI, GitHub Actions) с формированием отчетов (Allure, pytest-html).