Знаешь ли Python

Ответ

Да, я активно использую Python для автоматизации тестирования. Это мой основной инструмент для написания скриптов, API- и UI-тестов. Мой стек и опыт включают:

  • Фреймворки для тестирования: pytest (основной выбор за фикстуры, параметризацию и плагины), unittest.
  • API-тестирование: Работа с библиотеками requests, httpx. Пишу тесты для REST и GraphQL API, проверяю статус-коды, схемы ответов (использую jsonschema) и бизнес-логику.
  • UI-автоматизация: Опыт с Selenium WebDriver и Playwright для сквозного (E2E) тестирования веб-приложений. Использую Page Object Model для поддержки кода.
  • Работа с данными: Использую pandas для анализа логов или тестовых данных, SQLAlchemy для прямых проверок в БД в интеграционных тестах.
  • Дополнительные инструменты: Allure или pytest-html для отчетов, Faker для генерации тестовых данных, venv/poetry для управления зависимостями.

Пример API-теста с использованием pytest и проверкой схемы:

import pytest
import requests
from jsonschema import validate

schema = {
    "type": "object",
    "properties": {
        "id": {"type": "integer"},
        "title": {"type": "string"},
    },
    "required": ["id", "title"]
}

@pytest.mark.api
def test_get_product_schema():
    response = requests.get("https://api.example.com/products/1")
    assert response.status_code == 200
    product_data = response.json()
    validate(instance=product_data, schema=schema)  # Валидация структуры ответа
    assert product_data["id"] == 1

Ответ 18+ 🔞

А, ну так ты про автоматизацию на Python спрашиваешь? Да, конечно, хуй с горы, это же мой основной хлеб с маслом, а иногда и с икрой. Чисто технически, я на нём всё и делаю — от мелких скриптов до целых фреймворков для тестов. Слушай, вот тебе расклад по полочкам, чтобы ты понимал, с чем имеешь дело.

Основной стек, которым я дышу:

  • Фреймворки: Ну, pytest — это святое, ёпта. Фикстуры, параметризация, плагины — красота, а не инструмент. unittest тоже знаю, но он какой-то унылый, как осенний дождь, честно говоря.
  • API-тесты: Тут всё просто: беру requests или httpx и начинаю долбить эндпоинты. REST, GraphQL — без разницы. Проверяю всё: от банального статус-кода до схемы ответа через jsonschema и самой бизнес-логики. Чтобы не было такого, что тебе в ответе присылают строку вместо числа, а ты потом охуеваешь.
  • UI-автоматизация: Работал и с Selenium (старая, добрая, но иногда тормозная кляча), и с Playwright — вот это уже вещь, ядрёна вошь! Сквозные тесты гоняю, как угорелый. И да, Page Object Model использую обязательно, а то потом поддерживать этот код — просто пиздец, волнение ебать.
  • Данные: Если нужно с логами поковыряться или тестовые данные подготовить — pandas в руки. Для интеграционных проверок лезу прямо в базу через SQLAlchemy, чтобы уж наверняка.
  • Всякая полезная хуйня: Для отчётов — Allure (красиво, бля) или pytest-html (попроще). Данные генерирую Faker'ом. Зависимости через venv или poetry держу, чтобы не было конфликтов, а то потом разгребать — терпения ноль ебать.

Вот, смотри, живой пример, как я API тестирую. Просто, но со смыслом:

import pytest
import requests
from jsonschema import validate

schema = {
    "type": "object",
    "properties": {
        "id": {"type": "integer"},
        "title": {"type": "string"},
    },
    "required": ["id", "title"]
}

@pytest.mark.api
def test_get_product_schema():
    response = requests.get("https://api.example.com/products/1")
    assert response.status_code == 200
    product_data = response.json()
    validate(instance=product_data, schema=schema)  # Валидация структуры ответа
    assert product_data["id"] == 1

Вот и вся магия. Главное — подход системный, а не просто так, с бухты-барахты скрипты писать. И тогда даже самый ебаный легаси-код можно покрыть тестами так, что он хотя бы перестанет падать в пятницу вечером.