2024-bsc-sebastian-lenzlinger/tests/test_setup_logging.py

44 lines
1.9 KiB
Python

from unittest import mock
from unittest.mock import patch
import logging
from iottb.definitions import MAX_VERBOSITY
from iottb.utils.logger_config import setup_logging
import pytest
class TestSetupLogging:
# setup_logging sets correct log level based on verbosity
def test_sets_correct_log_level_based_on_verbosity(self, mocker):
mock_basic_config = mocker.patch('logging.basicConfig')
setup_logging(verbosity=1)
mock_basic_config.assert_called_once_with(level=logging.WARNING, handlers=[mocker.ANY], force=True)
# setup_logging handles verbosity values greater than MAX_VERBOSITY
def test_handles_verbosity_greater_than_max_verbosity(self, mocker):
mock_basic_config = mocker.patch('logging.basicConfig')
setup_logging(verbosity=MAX_VERBOSITY + 1)
mock_basic_config.assert_called_once_with(level=logging.INFO, handlers=[mocker.ANY], force=True)
# make sure the root logger has different log level before and after this is called, depending on if verbosity or
# debug is given
def test_root_logger_level_change(self):
with patch('iottb.setup_logging.logging.basicConfig') as mock_basicConfig:
setup_logging(verbosity=1, debug=False)
mock_basicConfig.assert_called_once_with(level=logging.WARNING, handlers=[mock.ANY])
mock_basicConfig.reset_mock()
setup_logging(verbosity=2, debug=False)
mock_basicConfig.assert_called_once_with(level=logging.INFO, handlers=[mock.ANY])
mock_basicConfig.reset_mock()
setup_logging(verbosity=1, debug=True)
mock_basicConfig.assert_called_once_with(level=logging.DEBUG, handlers=[mock.ANY])
mock_basicConfig.reset_mock()
setup_logging(verbosity=2, debug=True)
mock_basicConfig.assert_called_once_with(level=logging.DEBUG, handlers=[mock.ANY])