[python] doctest에서 미리 정의된 변수를 사용하는 방법은?

doctest에서는 미리 정의된 변수를 사용하는 것이 일반적으로 권장되지 않습니다. doctest는 코드 예제와 해당 예제의 예상 결과를 비교하여 테스트하는 데 사용되는 도구이기 때문에, 변수 정의 없이 코드 스니펫의 독립성과 일관성을 유지하는 것이 중요합니다.

그러나 때로는 특정 상황에서 미리 정의된 변수를 사용해야 할 수도 있습니다. 이 경우에는 doctest의 “전역 설정” 기능을 활용할 수 있습니다. 전역 설정을 통해 각 테스트 실행 전에 변수를 정의할 수 있습니다.

예를 들어, 아래와 같은 코드 스니펫이 있다고 가정해봅시다.

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

    >>> x = 2
    >>> y = 3
    >>> add(x, y)
    5
    """
    return a + b

이 경우, doctest에서 미리 정의된 변수 x와 y를 사용하여 add 함수를 테스트하려면 다음과 같이 전역 설정을 추가합니다.

import doctest

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

    >>> x = 2
    >>> y = 3
    >>> add(x, y)
    5
    """
    return a + b

doctest.globs.update({'x': 2, 'y': 3})
doctest.testmod()

전역 설정을 추가함으로써 x와 y 변수를 테스트 실행 전에 미리 정의할 수 있습니다. 이렇게 하면 테스트 실행 도중 변수 정의에 대해 문제가 발생하지 않게 됩니다. 하지만 이러한 방식은 가능하면 사용을 피하는 것이 좋습니다. 대신, 함수의 인자 값을 사용하는 것을 권장합니다.