basic json log formatter
This commit is contained in:
57
tests/utils/test_logging.py
Normal file
57
tests/utils/test_logging.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from io import StringIO
|
||||
import json
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
from atst.utils.logging import JsonFormatter
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def log_stream():
|
||||
return StringIO()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def log_stream_content(log_stream):
|
||||
def _log_stream_content():
|
||||
log_stream.seek(0)
|
||||
return log_stream.read()
|
||||
|
||||
return _log_stream_content
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def logger(log_stream):
|
||||
logger = logging.getLogger()
|
||||
for handler in logger.handlers:
|
||||
logger.removeHandler(handler)
|
||||
|
||||
logHandler = logging.StreamHandler(log_stream)
|
||||
formatter = JsonFormatter()
|
||||
logHandler.setFormatter(formatter)
|
||||
logger.addHandler(logHandler)
|
||||
|
||||
return logger
|
||||
|
||||
|
||||
def test_json_formatter(logger, log_stream_content):
|
||||
logger.warning("do or do not", extra={"tags": ["wisdom", "jedi"]})
|
||||
|
||||
log = json.loads(log_stream_content())
|
||||
|
||||
assert log["tags"] == ["wisdom", "jedi"]
|
||||
assert log["message"] == "do or do not"
|
||||
assert log["severity"] == "WARNING"
|
||||
assert log.get("details") is None
|
||||
|
||||
|
||||
def test_json_formatter_for_exceptions(logger, log_stream_content):
|
||||
try:
|
||||
raise Exception()
|
||||
except Exception:
|
||||
logger.exception("you found the ventilation shaft!")
|
||||
|
||||
log = json.loads(log_stream_content())
|
||||
assert log["severity"] == "ERROR"
|
||||
assert log.get("details")
|
Reference in New Issue
Block a user