[python] pytest-catchlog를 사용한 로깅 테스트

로그는 애플리케이션에서 중요한 부분이며, 올바른 로깅은 애플리케이션의 안정성과 유지 보수를 돕습니다. pytest-catchlog는 단위 테스트에 로깅을 확인하는 데 유용한 pytest 플러그인입니다. 이 라이브러리를 사용하면 로깅 출력을 검사하고 테스트 결과에 기록할 수 있습니다.

pytest-catchlog 설치

먼저 pytest-catchlog를 설치해야 합니다. 일반적으로 파이썬 가상 환경에서 다음 명령을 실행하여 설치할 수 있습니다.

pip install pytest-catchlog

로깅 테스트 작성

pytest-catchlog를 사용하여 간단한 로깅 테스트를 작성해 보겠습니다. 다음은 간단한 애플리케이션 코드와 해당 코드를 테스트하는 테스트 코드입니다.

# app.py
import logging

def divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        logging.error("Division by zero")
    else:
        logging.info("Division result: %s", result)
    return result
# test_app.py
import logging
import app

def test_divide(capsys):
    with capsys.disabled():  # Disable capturing log output
        app.divide(4, 2)
    captured = capsys.readouterr()
    assert "Division result: 2.0" in captured.out

위의 코드에서 test_divide 함수는 app.divide 함수를 호출하고 로깅된 결과를 검사합니다. capsys 객체를 사용하여 캡처된 로깅 출력을 확인할 수 있습니다.

테스트 실행 및 결과 확인

이제 pytest를 실행하여 테스트를 실행하고 결과를 확인할 수 있습니다.

pytest

pytest-catchlog를 사용하여 로깅을 테스트하면 애플리케이션의 로깅을 자동으로 확인하여 예상대로 작동하는지 확인할 수 있습니다.

로그 테스트는 로깅 수준 및 메시지가 올바른지 확인하여 애플리케이션의 로깅 동작을 확실히 할 수 있으며, pytest-catchlog는 이를 단순하고 효과적으로 수행할 수 있도록 도와줍니다.

결론

pytest-catchlog를 사용하면 로깅을 테스트하여 애플리케이션의 로깅이 예상한 대로 작동하는지 확인할 수 있습니다. 이를 통해 애플리케이션의 안정성을 높일 수 있으며, 유지 보수 및 디버깅을 용이하게 할 수 있습니다.