kwork-api/tests/e2e/conftest.py
root 42763cc933 feat: add CI workflow with linting, testing, type checking and security scans
- Split workflow into 3 parallel jobs (lint, test, security)
- Add MyPy for static type checking
- Add Ruff for linting and formatting (replaces flake8/pylint)
- Add pip-audit for security vulnerability scanning
- Add pre-commit hook for automatic code formatting
- Add extended unit tests (93% code coverage)
- Fix security check workflow and uv compatibility
2026-03-29 21:07:38 +00:00

57 lines
1.6 KiB
Python

"""
E2E тесты для Kwork API.
Требуют реальных credentials и запускаются только локально.
"""
import os
from pathlib import Path
import pytest
from dotenv import load_dotenv
# Загружаем .env
load_dotenv(Path(__file__).parent / ".env")
@pytest.fixture(scope="session")
def kwork_credentials():
"""Credentials для тестового аккаунта."""
return {
"username": os.getenv("KWORK_USERNAME"),
"password": os.getenv("KWORK_PASSWORD"),
}
@pytest.fixture(scope="session")
def require_credentials(kwork_credentials):
"""Пропускает тест если нет credentials."""
if not kwork_credentials["username"] or not kwork_credentials["password"]:
pytest.skip(
"E2E credentials not set. "
"Copy tests/e2e/.env.example to tests/e2e/.env and fill in credentials."
)
return kwork_credentials
@pytest.fixture(scope="function")
def slowmo(request):
"""Задержка между тестами для rate limiting."""
slowmo = request.config.getoption("--slowmo", default=0)
if slowmo > 0:
import time
time.sleep(slowmo)
def pytest_configure(config):
"""Регистрация маркера e2e."""
config.addinivalue_line("markers", "e2e: mark test as end-to-end (requires credentials)")
def pytest_addoption(parser):
"""Добавляет опцию --slowmo."""
parser.addoption(
"--slowmo", type=float, default=0, help="Delay between tests in seconds (for rate limiting)"
)