kwork-api/tests/e2e
root 3995d60b6b
Some checks failed
PR Checks / test (pull_request) Failing after 25s
PR Checks / security (pull_request) Failing after 7s
fix: auto-format code and fix linter errors
2026-03-29 08:58:35 +00:00
..
.env.example test: add E2E testing framework 2026-03-29 01:35:57 +00:00
conftest.py fix: auto-format code and fix linter errors 2026-03-29 08:58:35 +00:00
README.md test: add E2E testing framework 2026-03-29 01:35:57 +00:00
test_auth.py fix: auto-format code and fix linter errors 2026-03-29 08:58:35 +00:00

End-to-End (E2E) Testing

E2E тесты требуют реальных credentials Kwork.ru и запускаются только локально (не в CI).

⚠️ Предупреждение

  • Не запускай в CI — требуются реальные credentials
  • Используй тестовый аккаунт — не основной аккаунт Kwork
  • Rate limiting — добавляй задержки между запросами

🔧 Настройка

1. Создай файл окружения

cd /root/kwork-api
cp tests/e2e/.env.example tests/e2e/.env

2. Заполни credentials

# tests/e2e/.env
KWORK_USERNAME=your_test_username
KWORK_PASSWORD=your_test_password

3. Установи зависимости

uv sync --group dev

🚀 Запуск тестов

Все E2E тесты

uv run pytest tests/e2e/ -v

Конкретный тест

uv run pytest tests/e2e/test_auth.py -v
uv run pytest tests/e2e/test_catalog.py::test_get_catalog_list -v

С задержками (rate limiting)

uv run pytest tests/e2e/ -v --slowmo=1

📁 Структура тестов

tests/e2e/
├── README.md           # Этот файл
├── .env.example        # Шаблон для credentials
├── conftest.py         # Фикстуры и setup
├── test_auth.py        # Аутентификация
├── test_catalog.py     # Каталог кворков
├── test_projects.py    # Биржа проектов
└── test_user.py        # Пользовательские данные

🧪 Пример теста

import pytest
from kwork_api import KworkClient

@pytest.mark.e2e
async def test_get_user_info():
    """E2E тест: получение информации о пользователе."""
    async with await KworkClient.login(
        username="test_user",
        password="test_pass"
    ) as client:
        user = await client.user.get_info()
        assert user.username == "test_user"
        assert user.balance >= 0

🏷️ Маркировка тестов

E2E тесты маркируются @pytest.mark.e2e для изоляции:

# Запустить только unit тесты (исключить e2e)
uv run pytest tests/ -v -m "not e2e"

# Запустить только e2e тесты
uv run pytest tests/ -v -m e2e

🔒 Безопасность

  1. Никогда не коммить .env — добавлен в .gitignore
  2. Используй тестовый аккаунт — не основной
  3. Не сохраняй токены в коде — только через env vars

🐛 Troubleshooting

Ошибка аутентификации

KworkAuthError: Invalid credentials

Решение: Проверь credentials в .env

Rate limit

KworkApiError: Too many requests

Решение: Запусти с задержкой: pytest --slowmo=2

Session expired

KworkAuthError: Session expired

Решение: Перезапусти тесты (session создаётся заново)