newdwh2021/ecs/crm-datafetch/tests/util/test_logger_logger_class.py

79 lines
2.5 KiB
Python

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