[python] doctest 결과 출력을 어떻게 처리할 수 있나요?

첫 번째 방법은 예제에 출력된 결과를 직접 작성하는 것입니다. 이 경우 예제의 실행 결과를 doctest에 직접 작성해야 합니다. 예를 들어, 아래의 예제 코드를 보겠습니다.

def add(a, b):
    """
    두 숫자를 더하는 함수입니다.

    >>> add(2, 3)
    5
    >>> add(10, -5)
    5
    """
    return a + b

위의 코드에서 add 함수는 두 숫자를 더하여 반환하는 간단한 함수입니다. 예제로 add 함수에 대한 실행 결과를 작성해야 합니다. 이 경우에는 add 함수의 실행 결과가 5로 예상되므로, 그에 맞게 doctest에 작성하면 됩니다.

두 번째 방법은 doctest.ELLIPSIS를 사용하여 출력 결과를 일부 생략하는 것입니다. ...을 사용하여 출력 결과의 일부를 생략할 수 있습니다. 예를 들어, 아래의 예제 코드를 보겠습니다.

def multiply(a, b):
    """
    두 숫자를 곱하는 함수입니다.

    >>> multiply(2, 3)
    6
    >>> multiply(10, -5)
    -50
    """
    return a * b

위의 코드에서 multiply 함수는 두 숫자를 곱하여 반환하는 간단한 함수입니다. 예제로 multiply 함수에 대한 실행 결과를 작성해야 합니다. 이 경우에는 multiply 함수의 실행 결과가 6으로 예상되므로, doctest에서 다음과 같이 작성할 수 있습니다.

>>> multiply(2, 3)
6
>>> multiply(10, -5)
...

마지막 방법은 doctest.OUTPUT_MARKER를 사용하여 예상되는 출력 결과를 표시하는 것입니다. 예를 들어, 아래의 예제 코드를 보겠습니다.

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

    >>> divide(10, 2)
    5.0
    >>> divide(5, 0)
    Traceback (most recent call last):
        ...
    ZeroDivisionError: division by zero
    """
    return a / b

위의 코드에서 divide 함수는 두 숫자를 나누어 반환하는 간단한 함수입니다. 첫 번째 예제의 경우에는 예상되는 출력 결과가 5.0이므로 그대로 작성하면 됩니다. 두 번째 예제의 경우에는 ZeroDivisionError가 발생하는 예외 상황입니다. 이를 doctest에서 표시하려면 다음과 같이 작성합니다.

>>> divide(5, 0)
Traceback (most recent call last):
    ...
ZeroDivisionError: division by zero

위의 세 가지 방법을 사용하여 doctest 결과 출력을 처리할 수 있습니다.

참고 문서: