diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/fixtures/mock_imports_unit_tests.py b/platform/broadcom/sonic-platform-modules-nexthop/test/fixtures/mock_imports_unit_tests.py index 243e9acb2b0..20623b3cde9 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/fixtures/mock_imports_unit_tests.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/fixtures/mock_imports_unit_tests.py @@ -12,7 +12,7 @@ import types -from unittest.mock import Mock +from unittest.mock import MagicMock, Mock from fixtures.fake_swsscommon import fake_swsscommon_modules @@ -59,6 +59,7 @@ def mock_syslog_modules(): class MockSysLogger: # Methods as mocks so tests can assert calls + log_notice = Mock() log_info = Mock() log_error = Mock() log_warning = Mock() @@ -68,15 +69,19 @@ class MockSysLogger: def __init__(self, *args, **kwargs): pass - syslogger = Mock() + syslogger = MagicMock() syslogger.SysLogger = MockSysLogger - syslog = Mock() + logger = MagicMock() + logger.Logger = MockSysLogger + + syslog = MagicMock() syslog.SYSLOG_IDENTIFIER_THERMAL = "nh_thermal" syslog.NhLoggerMixin = MockSysLogger return { "sonic_py_common.syslogger": syslogger, + "sonic_py_common.logger": logger, "sonic_platform.syslog": syslog, } diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/conftest.py b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/conftest.py index 5214ad8a3e7..d3da10cd4b3 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/conftest.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/conftest.py @@ -15,6 +15,9 @@ from unittest.mock import patch +from fixtures.mock_imports_unit_tests import mock_syslog_modules +from fixtures.fake_swsscommon import fake_swsscommon_modules + @pytest.fixture(scope="module", autouse=True) def patch_dependencies(): @@ -23,7 +26,14 @@ def patch_dependencies(): This fixture is automatically applied to all tests in the integration/ directory. It uses module scope, so it won't interfere with unit tests. """ + modules = {} + modules.update(mock_syslog_modules()) + modules.update(fake_swsscommon_modules()) + TEST_DIR = os.path.dirname(os.path.realpath(__file__)) + sonic_py_common = os.path.join( + TEST_DIR, "../../../../../src/sonic-py-common/" + ) sonic_platform_common = os.path.join( TEST_DIR, "../../../../../src/sonic-platform-common/" ) @@ -31,6 +41,7 @@ def patch_dependencies(): TEST_DIR, "../../../../../platform/pddf/platform-api-pddf-base" ) - with patch.object(sys, "path", [sonic_platform_common, pddf_base] + sys.path): - # Keep the patch active while integration tests are running - yield + with patch.dict(sys.modules, modules): + with patch.object(sys, "path", [sonic_py_common, sonic_platform_common, pddf_base] + sys.path): + # Keep the patch active while integration tests are running + yield diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/nexthop/test_adm1266_chassis_integration.py b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/nexthop/test_adm1266_chassis_integration.py index 79e1aa0cce8..427c315ff66 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/nexthop/test_adm1266_chassis_integration.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/nexthop/test_adm1266_chassis_integration.py @@ -14,11 +14,8 @@ def mock_unimportant_modules(): """Mock modules that aren't important for integration testing.""" modules = {} - modules["sonic_py_common"] = Mock() modules["sonic_platform.dpm"] = Mock() modules["sonic_platform.dpm"].SystemDPMLogHistory = Mock() - modules.update(mock_syslog_modules()) - modules.update(fake_swsscommon_modules()) with patch.dict(sys.modules, modules): yield diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/sonic_platform/test_chassis_sfp_integration.py b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/sonic_platform/test_chassis_sfp_integration.py index 9698445f6bc..a29e461388a 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/integration/sonic_platform/test_chassis_sfp_integration.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/integration/sonic_platform/test_chassis_sfp_integration.py @@ -20,18 +20,7 @@ @pytest.fixture(scope="module") -def mock_unimportant_modules(): - """Mock modules that aren't important for integration testing.""" - modules = {} - modules.update(mock_syslog_modules()) - modules.update(fake_swsscommon_modules()) - - with patch.dict(sys.modules, modules): - yield - - -@pytest.fixture(scope="module") -def chassis_module(mock_unimportant_modules): +def chassis_module(): """Loads the module before all tests. This is to let conftest.py inject deps first.""" from sonic_platform import chassis @@ -39,7 +28,7 @@ def chassis_module(mock_unimportant_modules): @pytest.fixture(scope="module") -def mock_sfps(mock_unimportant_modules): +def mock_sfps(): """ Fixture providing autospec'ed mock SFP objects for testing. Creates a list of mock SFPs and attaches them to the chassis. diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/unit/nexthop/test_pddf_config_parser.py b/platform/broadcom/sonic-platform-modules-nexthop/test/unit/nexthop/test_pddf_config_parser.py index c51cc86dc16..24b121a58de 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/unit/nexthop/test_pddf_config_parser.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/unit/nexthop/test_pddf_config_parser.py @@ -7,11 +7,9 @@ Unit tests for the pddf_config_parser module. """ -import sys import os import json import pytest -from unittest.mock import MagicMock @pytest.fixture(scope="function", autouse=True) @@ -21,12 +19,6 @@ def pddf_config_parser_module(): yield pddf_config_parser -# Mock sonic_py_common if not available -try: - import sonic_py_common -except ImportError: - sys.modules["sonic_py_common"] = MagicMock() - sys.modules["sonic_py_common.logger"] = MagicMock() CWD = os.path.dirname(os.path.realpath(__file__)) BASE_PLATFORM_PDDF_PATH = "../../../../../../device/nexthop/{}/pddf"