"""Tests for the logger module."""importloggingimportpytestfromtrustpoint.loggerimportLoggerMixin@pytest.fixture
[docs]defsample_class():"""Fixture providing a sample class that uses LoggerMixin."""classSampleClass(LoggerMixin):passreturnSampleClass
[docs]classTestLoggerMixin:"""Pytest-based test suite for LoggerMixin."""
[docs]deftest_logger_initialization(self,sample_class):"""Verify that LoggerMixin initializes a logger correctly."""asserthasattr(sample_class,'logger'),"LoggerMixin should add a 'logger' attribute"assertisinstance(sample_class.logger,logging.Logger),'Logger should be an instance of logging.Logger'
[docs]deftest_logger_hierarchy(self,sample_class):"""Verify that the logger hierarchy is set up correctly."""expected_logger_name=f'trustpoint.{sample_class.__module__}.{sample_class.__name__}'logger_name=sample_class.logger.nameassertlogger_name==expected_logger_name,(f"Expected logger name '{expected_logger_name}', but got '{logger_name}'")
[docs]deftest_logger_different_classes_have_different_loggers(self,sample_class):"""Ensure that separate classes using LoggerMixin have distinct loggers."""classAnotherSampleClass(LoggerMixin):passlogger_1=sample_class.loggerlogger_2=AnotherSampleClass.loggerassertlogger_1!=logger_2,(f'Loggers should be distinct for separate classes. Found the same: {logger_1.name}')assertlogger_1.name!=logger_2.name,(f'Logger names should differ for distinct classes. 'f'Found: {logger_1.name} and {logger_2.name}')
[docs]deftest_logger_correct_in_nested_modules(self):"""Verify proper logger hierarchy in nested modules."""classMockModule:classSampleClass(LoggerMixin):passexpected_logger_name=f'trustpoint.{MockModule.SampleClass.__module__}.{MockModule.SampleClass.__name__}'assertMockModule.SampleClass.logger.name==expected_logger_name,(f"Expected logger name '{expected_logger_name}', but got '{MockModule.SampleClass.logger.name}'")