From 925ee72fb2571e44c3833d01e9d486ae72d364ff Mon Sep 17 00:00:00 2001 From: "Tybulewicz, Tomasz" Date: Tue, 7 Jul 2026 09:41:55 +0200 Subject: [PATCH 1/2] feat(tests): run inference tests only on selected model type --- model_api/tests/functional/conftest.py | 6 ++++++ model_api/tests/functional/test_inference.py | 19 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/model_api/tests/functional/conftest.py b/model_api/tests/functional/conftest.py index b1eadd93..32bf03e9 100644 --- a/model_api/tests/functional/conftest.py +++ b/model_api/tests/functional/conftest.py @@ -34,6 +34,12 @@ def pytest_addoption(parser): default="", help="directory to store inference result", ) + parser.addoption( + "--only-model-type", + action="store", + default="", + help="select model type to run tests on (and all that inherit from it)", + ) def pytest_configure(config): diff --git a/model_api/tests/functional/test_inference.py b/model_api/tests/functional/test_inference.py index 6e1c4204..3fb83991 100644 --- a/model_api/tests/functional/test_inference.py +++ b/model_api/tests/functional/test_inference.py @@ -6,6 +6,7 @@ import json import operator from pathlib import Path +from typing import Type import cv2 import numpy as np @@ -32,6 +33,7 @@ InstanceSegmentationResult, KeypointDetectionModel, MaskRCNNModel, + Model, Prompt, SAMDecoder, SAMImageEncoder, @@ -145,6 +147,14 @@ def model_data_file(pytestconfig): return pytestconfig.getoption("model_data") +@pytest.fixture(scope="session") +def only_model_class(pytestconfig): + model_type = pytestconfig.getoption("only_model_type") + if not model_type: + return None + return Model.get_model_class(model_type) + + def pytest_generate_tests(metafunc): if "model_data" in metafunc.fixturenames: model_data_file = metafunc.config.getoption("model_data") @@ -416,13 +426,18 @@ def assert_contours_match(actual: list[dict], expected: list[dict]) -> None: ) -def test_image_models(data, device, dump, result, model_data, results_dir): # noqa: C901 +def test_image_models(data, device, dump, result, model_data, results_dir, only_model_class): # noqa: C901 name = model_data["name"] + + model_type = MODEL_TYPE_MAPPING[model_data["type"]] + if only_model_class and not issubclass(model_type, only_model_class): + pytest.skip(f"Skipping {name} as it is not a subclass of {only_model_class.__name__}") + if name.endswith((".xml", ".onnx")): name = f"{data}/{name}" for model in create_models( - MODEL_TYPE_MAPPING[model_data["type"]], + model_type, name, data, model_data.get("force_ort", False), From 51d8f8912e926b96ecd3046934ae77e870c6ca69 Mon Sep 17 00:00:00 2001 From: "Tybulewicz, Tomasz" Date: Tue, 7 Jul 2026 09:55:12 +0200 Subject: [PATCH 2/2] Restore return type --- model_api/tests/functional/test_inference.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model_api/tests/functional/test_inference.py b/model_api/tests/functional/test_inference.py index 3fb83991..3d96369a 100644 --- a/model_api/tests/functional/test_inference.py +++ b/model_api/tests/functional/test_inference.py @@ -148,7 +148,7 @@ def model_data_file(pytestconfig): @pytest.fixture(scope="session") -def only_model_class(pytestconfig): +def only_model_class(pytestconfig) -> Type[Model] | None: model_type = pytestconfig.getoption("only_model_type") if not model_type: return None