feat: loggerクラスのテストコードの追加

This commit is contained in:
Y_SAKAI 2022-08-16 18:17:40 +09:00
parent 1c4cac1f58
commit d9c4268a02
2 changed files with 128 additions and 2 deletions

View File

@ -0,0 +1,78 @@
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

View File

@ -1,7 +1,5 @@
import logging
from unittest.mock import MagicMock, patch
import pytest
from src.util.logger import logger_instance as logger
@ -18,6 +16,7 @@ class TestLogger:
- 期待値通りのログが出力されること
"""
# Arranges
caplog.set_level(logging.DEBUG)
logger.debug('debugログ出力')
@ -26,6 +25,7 @@ class TestLogger:
logger.error("errorログ出力")
logger.critical("criticalログ出力")
# Expects
assert ("root", logging.DEBUG, "debugログ出力") in caplog.record_tuples
assert ("root", logging.INFO, "infoログ出力") in caplog.record_tuples
assert ("root", logging.WARNING, "warningログ出力") in caplog.record_tuples
@ -43,6 +43,7 @@ class TestLogger:
- 期待値通りのログが出力されること
"""
# Arranges
caplog.set_level(logging.INFO)
logger.debug('debugログ出力')
@ -51,6 +52,7 @@ class TestLogger:
logger.error("errorログ出力")
logger.critical("criticalログ出力")
# Expects
assert ("root", logging.DEBUG, "debugログ出力") not in caplog.record_tuples
assert ("root", logging.INFO, "infoログ出力") in caplog.record_tuples
assert ("root", logging.WARNING, "warningログ出力") in caplog.record_tuples
@ -68,6 +70,7 @@ class TestLogger:
- 期待値通りのログが出力されること
"""
# Arranges
caplog.set_level(logging.WARNING)
logger.debug('debugログ出力')
@ -76,6 +79,7 @@ class TestLogger:
logger.error("errorログ出力")
logger.critical("criticalログ出力")
# Expects
assert ("root", logging.DEBUG, "debugログ出力") not in caplog.record_tuples
assert ("root", logging.INFO, "infoログ出力") not in caplog.record_tuples
assert ("root", logging.WARNING, "warningログ出力") in caplog.record_tuples
@ -93,6 +97,7 @@ class TestLogger:
- 期待値通りのログが出力されること
"""
# Arranges
caplog.set_level(logging.ERROR)
logger.debug('debugログ出力')
@ -101,6 +106,7 @@ class TestLogger:
logger.error("errorログ出力")
logger.critical("criticalログ出力")
# Expects
assert ("root", logging.DEBUG, "debugログ出力") not in caplog.record_tuples
assert ("root", logging.INFO, "infoログ出力") not in caplog.record_tuples
assert ("root", logging.WARNING, "warningログ出力") not in caplog.record_tuples
@ -118,6 +124,7 @@ class TestLogger:
- 期待値通りのログが出力されること
"""
# Arranges
caplog.set_level(logging.CRITICAL)
logger.debug('debugログ出力')
@ -126,6 +133,7 @@ class TestLogger:
logger.error("errorログ出力")
logger.critical("criticalログ出力")
# Expects
assert ("root", logging.DEBUG, "debugログ出力") not in caplog.record_tuples
assert ("root", logging.INFO, "infoログ出力") not in caplog.record_tuples
assert ("root", logging.WARNING, "warningログ出力") not in caplog.record_tuples
@ -133,13 +141,53 @@ class TestLogger:
assert ("root", logging.CRITICAL, "criticalログ出力") in caplog.record_tuples
def test_logging_getlogger_boto3(self):
"""
Cases:
個別設定したboto3モジュールのログレベル確認
Arranges:
なし
Expects:
設定されているログレベルが期待値と一致すること
"""
# Expects
assert logging.getLogger("boto3").getEffectiveLevel() == logging.WARNING
def test_logging_getlogger_botocore(self):
"""
Cases:
個別設定したbotocoreモジュールのログレベル確認
Arranges:
なし
Expects:
設定されているログレベルが期待値と一致すること
"""
# Expects
assert logging.getLogger("botocore").getEffectiveLevel() == logging.WARNING
def test_logging_getlogger_s3transfer(self):
"""
Cases:
個別設定したs3transferモジュールのログレベル確認
Arranges:
なし
Expects:
設定されているログレベルが期待値と一致すること
"""
# Expects
assert logging.getLogger("s3transfer").getEffectiveLevel() == logging.WARNING
def test_logging_getlogger_urllib3(self):
"""
Cases:
個別設定したurllib3モジュールのログレベル確認
Arranges:
なし
Expects:
設定されているログレベルが期待値と一致すること
"""
# Expects
assert logging.getLogger("s3transfer").getEffectiveLevel() == logging.WARNING