import logging from logging import handlers from unittest.mock import MagicMock, patch from src.util.logger import Logger class TestLogger: def test_constructor_loglevel_test(self, caplog, monkeypatch): """ Cases: ログレベルに対象外の文字列を指定した場合、デフォルトであるInfoが指定されること Arranges: - LOG_LEVELの変数を想定外の文字列に置き換える - loggerインスタンスの生成 - ログ出力 Expects: - 期待値通りのログが出力されること - ログレベルがInfoで設定されていること """ # Arranges monkeypatch.setattr('src.util.logger.LOG_LEVEL', "test") sut = Logger() logger = sut.get_logger() logger.info('infoログ出力') # Expects assert ("root", logging.INFO, "infoログ出力") in caplog.record_tuples assert logger.getEffectiveLevel() == logging.INFO def test_constructor_hashandlers(self, monkeypatch): """ Cases: 生成したloggerインスタンスを利用し、期待値通りのログが出力されること Arranges: - `if not self.__logger.hasHandlers():`の分岐に入るようにモックを準備 - loggerインスタンスの生成 - ログ出力 Expects: - loggerインスタンスに1件以上のハンドラーが存在すること - loggerインスタンスにStreamHandlerが含まれていること """ # Arranges def dummy_method(arg): return False monkeypatch.setattr("logging.Logger.hasHandlers", dummy_method) sut = Logger() logger = sut.get_logger() logger.warning('warningログ出力') # Expects assert len(logger.handlers) >= 1 assert "StreamHandler" in str(logger.handlers) def test_get_logger(self, caplog): """ Cases: 生成したloggerインスタンスを利用し、期待値通りのログが出力されること Arranges: - loggerインスタンスの生成 - ログ出力 Expects: - 期待値通りのログが出力されること """ # Arranges sut = Logger() logger = sut.get_logger() logger.warning('warningログ出力') # Expects assert ("root", logging.WARNING, "warningログ出力") in caplog.record_tuples