""" Global log unit tests. Since global logs rely on hidden globals, these are behavior tests paired with the get and set functions for levels and loggers. """ from random import randint from unittest.mock import Mock from unittest.mock import patch from flows import log def test_get_set_levels(): """Test global log level getter and setter functions.""" for i in range(20): level = randint(0, 100) log.set_level(level) assert log.get_level() == level def test_get_set_loggers(): """Test global logger getter and setter functions.""" for i in range(20): with patch('flows.log.logger') as logger, \ patch('flows.log.get_level') as get_level, \ patch('flows.log.set_level') as set_level: level = randint(0, 100) mock_log = Mock() logger.setup.return_value = mock_log get_level.return_value = level log.set_logger(level) result = log.get_logger() set_level.assert_called_with(level) assert get_level.called assert logger.setup.call_args[0][3] == level assert result == mock_log