|
17 | 17 | import pytest |
18 | 18 | from PIL import Image |
19 | 19 |
|
20 | | -pytest.importorskip("torch") |
21 | | -pytest.importorskip("timm") |
22 | | -pytest.importorskip("sklearn") |
23 | | - |
| 20 | +import feast.image_utils as image_utils |
24 | 21 | from feast.image_utils import ( |
25 | 22 | ImageFeatureExtractor, |
26 | 23 | combine_embeddings, |
27 | 24 | get_image_metadata, |
28 | 25 | validate_image_format, |
29 | 26 | ) |
30 | 27 |
|
| 28 | +torch = pytest.importorskip("torch") |
| 29 | +pytest.importorskip("timm") |
| 30 | +pytest.importorskip("sklearn") |
| 31 | + |
| 32 | + |
| 33 | +@pytest.fixture(autouse=True) |
| 34 | +def mock_timm_model(monkeypatch): |
| 35 | + class DummyModel: |
| 36 | + def eval(self): |
| 37 | + return self |
| 38 | + |
| 39 | + def __call__(self, input_tensor): |
| 40 | + batch_size = input_tensor.shape[0] |
| 41 | + return torch.arange(1, 5, dtype=torch.float32).repeat(batch_size, 1) |
| 42 | + |
| 43 | + def create_model(*_args, **_kwargs): |
| 44 | + return DummyModel() |
| 45 | + |
| 46 | + def create_transform(**_config): |
| 47 | + def transform(_image): |
| 48 | + return torch.ones((3, 224, 224), dtype=torch.float32) |
| 49 | + |
| 50 | + return transform |
| 51 | + |
| 52 | + monkeypatch.setattr(image_utils.timm, "create_model", create_model) |
| 53 | + monkeypatch.setattr( |
| 54 | + image_utils, "resolve_data_config", lambda *_args, **_kwargs: {} |
| 55 | + ) |
| 56 | + monkeypatch.setattr(image_utils, "create_transform", create_transform) |
| 57 | + |
31 | 58 |
|
32 | 59 | class TestImageFeatureExtractor: |
33 | 60 | """Test ImageFeatureExtractor functionality.""" |
|
0 commit comments