[python] doctest를 사용하여 파이썬 알고리즘을 테스트하는 방법은?

파이썬에는 doctest라는 내장된 모듈이 존재하여 함수나 모듈의 동작을 테스트할 수 있는 간단하고 효율적인 방법을 제공합니다. 이 모듈을 사용하면 알고리즘 작성 시 예상 동작을 가정하고 이를 검증하는 테스트를 손쉽게 작성할 수 있습니다.

이제 doctest를 사용하여 파이썬 알고리즘을 테스트하는 방법을 살펴보겠습니다.

1. 테스트를 작성할 함수 작성

먼저, 테스트하고자 하는 함수를 작성해야 합니다. 예를 들어, 다음과 같은 간단한 함수를 작성해보겠습니다.

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

    >>> add_numbers(5, 3)
    8
    >>> add_numbers(-2, 7)
    5
    >>> add_numbers(0, 0)
    0
    """

    return a + b

위의 예시에서 add_numbers 함수는 두 숫자를 더한 결과를 반환하는 간단한 함수입니다. doctest를 이용하여 이 함수의 동작을 검증할 예정입니다.

2. 테스트 실행

작성한 테스트를 실행하기 위해서는 다음과 같은 코드를 작성해야 합니다.

import doctest

if __name__ == '__main__':
    doctest.testmod()

위 코드를 스크립트 파일의 마지막에 추가하고 파일을 실행하면 doctest가 작성한 테스트를 실행합니다. 모든 테스트가 통과된다면 아무런 출력이 없지만, 테스트 중 실패한 경우에는 해당 실패 사항을 상세히 알려줍니다.

3. 테스트 결과 분석

doctest는 테스트 결과를 자동으로 분석하여 통과 여부를 알려줍니다. 테스트는 예상 결과와 실제 결과를 비교하여 검증하므로, 예상하지 못한 결과가 나올 경우 테스트를 실패로 처리합니다.

실패한 테스트의 경우, 오류 메시지가 출력되며 문제가 되는 알고리즘 부분을 가리키고 있으므로 이를 수정하여 다시 테스트를 실행하면 됩니다.

4. 범위 넓히기

앞서 소개한 방법과 동일한 방식으로, 더 복잡한 알고리즘을 테스트할 수 있습니다. 함수의 입력과 예상 출력만 정확하게 작성하면 되기 때문에, 예외 케이스나 경계값을 추가하여 더 다양한 상황에서의 동작도 테스트할 수 있습니다.

참고 자료