Ответ
Опыт включает создание фреймворков и скриптов для автоматизации тестирования на Python с использованием современных библиотек и паттернов.
Ключевые технологии и подходы:
- UI-автоматизация: Selenium WebDriver с использованием паттерна Page Object Model (POM) для создания поддерживаемых и переиспользуемых тестов.
- API-тестирование: библиотеки
requestsиpytestдля проверки REST API. - Юнит-тестирование и организация:
pytestкак основной runner, с использованием фикстур (@pytest.fixture), параметризации (@pytest.mark.parametrize) и плагинов. - Работа с данными: использование
SQLAlchemyили сырых SQL-запросов для валидации данных в БД. - Система контроля версий: Git для управления кодом тестов.
Пример API-теста с использованием Pytest:
import pytest
import requests
BASE_URL = "https://api.example.com"
@pytest.mark.api
def test_get_user_by_id():
"""Тест проверяет корректность получения данных пользователя по ID."""
user_id = 1
response = requests.get(f"{BASE_URL}/users/{user_id}")
# Проверка статус-кода
assert response.status_code == 200, f"Expected 200, got {response.status_code}"
# Проверка структуры и данных ответа
user_data = response.json()
assert user_data["id"] == user_id
assert "email" in user_data
assert "@" in user_data["email"] # Базовая валидация email
# Пример параметризованного теста для проверки граничных случаев
@pytest.mark.parametrize("user_id, expected_status", [
(0, 404), # Несуществующий ID
("abc", 400), # Невалидный тип ID
(999999, 404), # Несуществующий ID
])
def test_get_user_invalid_ids(user_id, expected_status):
response = requests.get(f"{BASE_URL}/users/{user_id}")
assert response.status_code == expected_status
Почему POM и pytest: Паттерн POM отделяет логику теста от локаторов страницы, что упрощает поддержку. pytest предоставляет мощные возможности для структурирования и отчетности, что критично для больших проектов.