Skip to content

Commit 1c03794

Browse files
committed
fix: test_api bug
1 parent d5b1ad8 commit 1c03794

File tree

2 files changed

+6
-55
lines changed

2 files changed

+6
-55
lines changed

tests/api/test_product_router.py

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,50 +5,22 @@
55
input request formats and return properly formatted responses.
66
"""
77

8-
# Mock sklearn before importing any memos modules to avoid import errors
9-
import importlib.util
10-
import sys
11-
12-
from unittest.mock import MagicMock, Mock, patch
8+
from unittest.mock import Mock, patch
139

1410
import pytest
1511

1612
from fastapi.testclient import TestClient
1713

1814
# Patch the MOS_PRODUCT_INSTANCE directly after import
15+
# Patch MOS_PRODUCT_INSTANCE and MOSProduct so we can test the FastAPI router
16+
# without initializing the full MemOS product stack.
1917
import memos.api.routers.product_router as pr_module
2018

2119

22-
# Create a proper mock module with __spec__
23-
sklearn_mock = MagicMock()
24-
sklearn_mock.__spec__ = importlib.util.spec_from_loader("sklearn", None)
25-
sys.modules["sklearn"] = sklearn_mock
26-
27-
sklearn_fe_mock = MagicMock()
28-
sklearn_fe_mock.__spec__ = importlib.util.spec_from_loader("sklearn.feature_extraction", None)
29-
sys.modules["sklearn.feature_extraction"] = sklearn_fe_mock
30-
31-
sklearn_fet_mock = MagicMock()
32-
sklearn_fet_mock.__spec__ = importlib.util.spec_from_loader("sklearn.feature_extraction.text", None)
33-
sklearn_fet_mock.TfidfVectorizer = MagicMock()
34-
sys.modules["sklearn.feature_extraction.text"] = sklearn_fet_mock
35-
36-
# Mock sklearn.metrics as well
37-
sklearn_metrics_mock = MagicMock()
38-
sklearn_metrics_mock.__spec__ = importlib.util.spec_from_loader("sklearn.metrics", None)
39-
sklearn_metrics_mock.roc_curve = MagicMock()
40-
sys.modules["sklearn.metrics"] = sklearn_metrics_mock
41-
42-
43-
# Create mock instance
4420
_mock_mos_instance = Mock()
45-
4621
pr_module.MOS_PRODUCT_INSTANCE = _mock_mos_instance
4722
pr_module.get_mos_product_instance = lambda: _mock_mos_instance
48-
49-
# Mock MOSProduct class before importing to prevent initialization
5023
with patch("memos.mem_os.product.MOSProduct", return_value=_mock_mos_instance):
51-
# Import after patching
5224
from memos.api import product_api
5325

5426

tests/api/test_server_router.py

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
input request formats and return properly formatted responses.
66
"""
77

8-
# Mock sklearn before importing any memos modules to avoid import errors
9-
import importlib.util
10-
import sys
11-
12-
from unittest.mock import MagicMock, Mock, patch
8+
from unittest.mock import Mock, patch
139

1410
import pytest
1511

@@ -25,25 +21,8 @@
2521
)
2622

2723

28-
# Create a proper mock module with __spec__
29-
sklearn_mock = MagicMock()
30-
sklearn_mock.__spec__ = importlib.util.spec_from_loader("sklearn", None)
31-
sys.modules["sklearn"] = sklearn_mock
32-
33-
sklearn_fe_mock = MagicMock()
34-
sklearn_fe_mock.__spec__ = importlib.util.spec_from_loader("sklearn.feature_extraction", None)
35-
sys.modules["sklearn.feature_extraction"] = sklearn_fe_mock
36-
37-
sklearn_metrics_mock = MagicMock()
38-
sklearn_metrics_mock.__spec__ = importlib.util.spec_from_loader("sklearn.metrics", None)
39-
sys.modules["sklearn.metrics"] = sklearn_metrics_mock
40-
41-
sklearn_fet_mock = MagicMock()
42-
sklearn_fet_mock.__spec__ = importlib.util.spec_from_loader("sklearn.feature_extraction.text", None)
43-
sklearn_fet_mock.TfidfVectorizer = MagicMock()
44-
sys.modules["sklearn.feature_extraction.text"] = sklearn_fet_mock
45-
46-
24+
# Patch init_server so we can import server_api without starting the full MemOS stack,
25+
# and keep sklearn and other core dependencies untouched for other tests.
4726
@pytest.fixture(scope="module")
4827
def mock_init_server():
4928
"""Mock init_server before importing server_api."""

0 commit comments

Comments
 (0)