[python] doctest를 사용하여 예외 상황을 테스트하는 방법은?

일반적으로 doctest 모듈은 함수나 모듈의 동작을 확인하는 데 사용됩니다. 예외 상황에 대한 테스트를 작성할 때에도 doctest를 활용할 수 있습니다. 아래는 예외 상황을 테스트하는 방법을 보여주는 예제입니다.

def divide(a, b):
    """
    두 개의 숫자를 나누는 함수입니다.

    >>> divide(10, 2)
    5.0

    >>> divide(10, 0)  # 예외 상황 테스트
    Traceback (most recent call last):
        ...
    ZeroDivisionError: division by zero
    """
    return a / b

if __name__ == "__main__":
    import doctest
    doctest.testmod()

위 예제에서는 divide() 함수를 정의한 후 doctest를 활용하여 함수의 동작을 확인합니다. 첫 번째 테스트에서는 정상적인 동작을 확인하기 위해 divide(10, 2)를 호출한 결과가 5.0인지를 검증합니다.

두 번째 테스트에서는 예외 상황을 테스트하기 위해 divide(10, 0)를 호출합니다. 이 경우 ZeroDivisionError가 발생해야 합니다. doctestTraceback (most recent call last): 부터 ZeroDivisionError: division by zero 라인까지의 내용이 기대한 예외 상황과 일치하는지 확인합니다.

위와 같이 doctest를 사용하면 함수나 모듈의 예외 상황에 대한 테스트를 간편하게 작성하고 수행할 수 있습니다.

참고 자료: