Spaces:
Paused
Paused
| import os | |
| from collections.abc import Callable | |
| from typing import Literal | |
| import pytest | |
| # import monkeypatch | |
| from _pytest.monkeypatch import MonkeyPatch | |
| from openai.resources.audio.transcriptions import Transcriptions | |
| from openai.resources.chat import Completions as ChatCompletions | |
| from openai.resources.completions import Completions | |
| from openai.resources.embeddings import Embeddings | |
| from openai.resources.models import Models | |
| from openai.resources.moderations import Moderations | |
| from tests.integration_tests.model_runtime.__mock.openai_chat import MockChatClass | |
| from tests.integration_tests.model_runtime.__mock.openai_completion import MockCompletionsClass | |
| from tests.integration_tests.model_runtime.__mock.openai_embeddings import MockEmbeddingsClass | |
| from tests.integration_tests.model_runtime.__mock.openai_moderation import MockModerationClass | |
| from tests.integration_tests.model_runtime.__mock.openai_remote import MockModelClass | |
| from tests.integration_tests.model_runtime.__mock.openai_speech2text import MockSpeech2TextClass | |
| def mock_openai( | |
| monkeypatch: MonkeyPatch, | |
| methods: list[Literal["completion", "chat", "remote", "moderation", "speech2text", "text_embedding"]], | |
| ) -> Callable[[], None]: | |
| """ | |
| mock openai module | |
| :param monkeypatch: pytest monkeypatch fixture | |
| :return: unpatch function | |
| """ | |
| def unpatch() -> None: | |
| monkeypatch.undo() | |
| if "completion" in methods: | |
| monkeypatch.setattr(Completions, "create", MockCompletionsClass.completion_create) | |
| if "chat" in methods: | |
| monkeypatch.setattr(ChatCompletions, "create", MockChatClass.chat_create) | |
| if "remote" in methods: | |
| monkeypatch.setattr(Models, "list", MockModelClass.list) | |
| if "moderation" in methods: | |
| monkeypatch.setattr(Moderations, "create", MockModerationClass.moderation_create) | |
| if "speech2text" in methods: | |
| monkeypatch.setattr(Transcriptions, "create", MockSpeech2TextClass.speech2text_create) | |
| if "text_embedding" in methods: | |
| monkeypatch.setattr(Embeddings, "create", MockEmbeddingsClass.create_embeddings) | |
| return unpatch | |
| MOCK = os.getenv("MOCK_SWITCH", "false").lower() == "true" | |
| def setup_openai_mock(request, monkeypatch): | |
| methods = request.param if hasattr(request, "param") else [] | |
| if MOCK: | |
| unpatch = mock_openai(monkeypatch, methods=methods) | |
| yield | |
| if MOCK: | |
| unpatch() | |