Основные изменения: - API Client: * Переработан api_client.py — улучшена архитектура * Добавлены exceptions.py — кастомные исключения для API * Добавлены response.py — обертка для API ответов * Добавлены transport.py — HTTP транспорт с retry logic - Auth модуль (новый): * Добавлен src/pytfm/auth/__init__.py * AuthProvider интерфейс для аутентификации в тестах * Поддержка cookie-based auth для E2E тестов - Web модуль: * Добавлен web/locator.py — SmartLocator для Page Object Model * Обновлен web/pom.py — улучшена работа с locators * Обновлен web/__init__.py — экспорты для POM - Generators: * Расширен generators/__init__.py — PostDataGenerator для блога * Добавлены методы для генерации тестовых постов - Pytest plugin: * Добавлен pytest_plugin.py — фикстуры для playwright * Интеграция с AuthProvider для автоматической аутентификации - Конфигурация: * Обновлен pyproject.toml — зависимости и entry points
52 lines
999 B
TOML
52 lines
999 B
TOML
[project]
|
|
name = "pytfm"
|
|
version = "0.1.0"
|
|
description = "Python test framework for UI and API testing"
|
|
readme = "README.md"
|
|
authors = [
|
|
{ name = "Sergey Vanyushkin", email = "pi3c@yandex.ru" }
|
|
]
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
"playwright>=1.42.0",
|
|
"httpx>=0.28.0",
|
|
"pytest>=9.0.0",
|
|
"pytest-playwright>=0.7.0",
|
|
"pytest-asyncio>=0.23.0",
|
|
"pydantic>=2.0.0",
|
|
"mimesis>=19.1.0",
|
|
]
|
|
|
|
[project.entry-points."pytest11"]
|
|
pytfm = "pytfm.pytest_plugin"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/pytfm"]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"ruff>=0.15.0",
|
|
"mypy>=1.20.0",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
pythonpath = ["src"]
|
|
testpaths = ["tests"]
|
|
|
|
[tool.mypy]
|
|
strict = true
|
|
|
|
[tool.ruff]
|
|
target-version = "py313"
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "W", "B", "C4", "SIM"]
|
|
ignore = ["E501"]
|