plugin_daemon.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import os
  2. from collections.abc import Callable
  3. import pytest
  4. # import monkeypatch
  5. from _pytest.monkeypatch import MonkeyPatch
  6. from core.plugin.manager.model import PluginModelManager
  7. from tests.integration_tests.model_runtime.__mock.plugin_model import MockModelClass
  8. def mock_plugin_daemon(
  9. monkeypatch: MonkeyPatch,
  10. ) -> Callable[[], None]:
  11. """
  12. mock openai module
  13. :param monkeypatch: pytest monkeypatch fixture
  14. :return: unpatch function
  15. """
  16. def unpatch() -> None:
  17. monkeypatch.undo()
  18. monkeypatch.setattr(PluginModelManager, "invoke_llm", MockModelClass.invoke_llm)
  19. monkeypatch.setattr(PluginModelManager, "fetch_model_providers", MockModelClass.fetch_model_providers)
  20. monkeypatch.setattr(PluginModelManager, "get_model_schema", MockModelClass.get_model_schema)
  21. return unpatch
  22. MOCK = os.getenv("MOCK_SWITCH", "false").lower() == "true"
  23. @pytest.fixture
  24. def setup_model_mock(monkeypatch):
  25. if MOCK:
  26. unpatch = mock_plugin_daemon(monkeypatch)
  27. yield
  28. if MOCK:
  29. unpatch()