Перейти к содержанию

Тестирование

avito.testing — публичное пространство тестовых утилит для consumer-side тестов без реального HTTP.

Fake transport

Публичные тестовые утилиты SDK.

FakeTransport

FakeTransport(*, base_url: str = 'https://api.avito.ru')

Deterministic fake transport for SDK contract tests.

add

add(
    method: str, path: str, *responses: RouteResponder
) -> FakeTransport

Регистрирует один или несколько ответов для HTTP-маршрута.

add_json

add_json(
    method: str,
    path: str,
    payload: JsonValue,
    *,
    status_code: int = 200,
    headers: Mapping[str, str] | None = None,
) -> FakeTransport

Регистрирует JSON-ответ для HTTP-маршрута.

build

build(
    *,
    retry_policy: RetryPolicy | None = None,
    user_id: int | None = None,
) -> Transport

Создаёт низкоуровневый Transport поверх fake transport (internal helper).

as_client

as_client(
    *,
    user_id: int | None = None,
    retry_policy: RetryPolicy | None = None,
) -> AvitoClient

Создает публичный AvitoClient поверх fake transport без реального HTTP.

count

count(
    *, method: str | None = None, path: str | None = None
) -> int

Возвращает число перехваченных запросов с опциональной фильтрацией.

last

last(
    *, method: str | None = None, path: str | None = None
) -> RecordedRequest

Возвращает последний перехваченный запрос с опциональной фильтрацией.

RecordedRequest dataclass

RecordedRequest(
    method: str,
    path: str,
    params: dict[str, str],
    headers: dict[str, str],
    json_body: JsonValue,
    content: bytes,
)

Зафиксированный HTTP-запрос, перехваченный FakeTransport.

json_response

json_response(
    payload: JsonValue,
    *,
    status_code: int = 200,
    headers: Mapping[str, str] | None = None,
) -> httpx.Response

Создаёт httpx.Response с JSON-телом для использования в FakeTransport.

route_sequence

route_sequence(
    *responses: RouteResponder,
) -> Iterable[RouteResponder]

Упаковывает несколько ответов в последовательность для FakeTransport.add().

Контракт

  • FakeTransport записывает выполненные запросы и отдаёт заранее заданные ответы.
  • json_response() создаёт JSON-ответ для маршрута.
  • route_sequence() задаёт последовательность ответов для retry и stateful-сценариев.
  • FakeTransport.as_client() создаёт полностью инициализированный AvitoClient поверх fake transport без реального HTTP.
  • RecordedRequest позволяет проверять method, path, query params, headers и JSON body.

Пользовательские тесты должны работать через публичные утилиты avito.testing, а не через приватные поля AvitoClient.