openai-python
49 строк · 1.4 Кб
1from __future__ import annotations2
3import os4import asyncio5import logging6from typing import TYPE_CHECKING, Iterator, AsyncIterator7
8import pytest9
10from openai import OpenAI, AsyncOpenAI11
12if TYPE_CHECKING:13from _pytest.fixtures import FixtureRequest14
15pytest.register_assert_rewrite("tests.utils")16
17logging.getLogger("openai").setLevel(logging.DEBUG)18
19
20@pytest.fixture(scope="session")21def event_loop() -> Iterator[asyncio.AbstractEventLoop]:22loop = asyncio.new_event_loop()23yield loop24loop.close()25
26
27base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")28
29api_key = "My API Key"30
31
32@pytest.fixture(scope="session")33def client(request: FixtureRequest) -> Iterator[OpenAI]:34strict = getattr(request, "param", True)35if not isinstance(strict, bool):36raise TypeError(f"Unexpected fixture parameter type {type(strict)}, expected {bool}")37
38with OpenAI(base_url=base_url, api_key=api_key, _strict_response_validation=strict) as client:39yield client40
41
42@pytest.fixture(scope="session")43async def async_client(request: FixtureRequest) -> AsyncIterator[AsyncOpenAI]:44strict = getattr(request, "param", True)45if not isinstance(strict, bool):46raise TypeError(f"Unexpected fixture parameter type {type(strict)}, expected {bool}")47
48async with AsyncOpenAI(base_url=base_url, api_key=api_key, _strict_response_validation=strict) as client:49yield client50