Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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()
Expand All @@ -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,
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand All @@ -23,14 +26,22 @@ 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/"
)
pddf_base = os.path.join(
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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,15 @@


@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

yield chassis


@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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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"
Expand Down