|
5 | 5 | input request formats and return properly formatted responses. |
6 | 6 | """ |
7 | 7 |
|
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 |
13 | 9 |
|
14 | 10 | import pytest |
15 | 11 |
|
16 | 12 | from fastapi.testclient import TestClient |
17 | 13 |
|
18 | 14 | # 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. |
19 | 17 | import memos.api.routers.product_router as pr_module |
20 | 18 |
|
21 | 19 |
|
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 |
44 | 20 | _mock_mos_instance = Mock() |
45 | | - |
46 | 21 | pr_module.MOS_PRODUCT_INSTANCE = _mock_mos_instance |
47 | 22 | pr_module.get_mos_product_instance = lambda: _mock_mos_instance |
48 | | - |
49 | | -# Mock MOSProduct class before importing to prevent initialization |
50 | 23 | with patch("memos.mem_os.product.MOSProduct", return_value=_mock_mos_instance): |
51 | | - # Import after patching |
52 | 24 | from memos.api import product_api |
53 | 25 |
|
54 | 26 |
|
|
0 commit comments