[python] doctest를 사용하여 시간 기반 동작을 테스트하는 방법은?

doctest는 Python의 내장 모듈로, 패키지 또는 모듈의 docstring에 포함된 예제 코드를 실행하여 테스트하는 간단한 방법을 제공합니다. 일반적으로 함수의 입력과 출력을 테스트하는 데 사용되지만, 시간에 따라 변하는 동작을 테스트하는 데도 사용할 수 있습니다.

아래는 doctest를 사용하여 시간에 따라 변하는 동작을 테스트하는 예시입니다.

import time

def my_function():
    """
    >>> my_function()
    1
    2
    3
    """
    for i in range(1, 4):
        print(i)
        time.sleep(1)
        # 1초마다 출력하여 시간에 따른 동작을 테스트

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

위의 예제에서 my_function()은 1부터 3까지의 숫자를 1초마다 출력하는 함수입니다. doctest 모듈의 testmod() 함수를 호출하여 my_function()의 docstring에 포함된 예제 코드를 실행하고, 예상 출력과 실제 출력이 일치하는지 확인합니다.

doctest를 실행하면 docstring에 포함된 예제 코드와 비교하여 테스트를 수행하므로, 시간에 따라 변하는 동작도 테스트할 수 있습니다. 예제 코드에서는 1초마다 출력되는 값들을 검증하는데 사용하고 있습니다.

doctest를 사용하면 코드와 문서를 한 곳에서 유지하고 동기화할 수 있으므로, 테스트 코드 작성에 편리함을 제공합니다. 시간 기반의 동작을 테스트할 때도 간편하게 사용할 수 있으므로, doctest를 활용하여 코드의 정확성을 보장할 수 있습니다.

자세한 내용은 Python 공식 문서의 doctest 모듈을 참조하시기 바랍니다.