[python] doctest를 사용하여 비동기 코드를 테스트하는 방법은?

doctest는 Python 표준 라이브러리에 포함된 모듈로, 함수와 메소드의 독스트링에 포함된 예제를 추출하고 실행하여 코드를 테스트하는 기능을 제공합니다. 하지만 doctest는 기본적으로 동기 코드에 대해서만 작동합니다. 그렇다면 비동기 코드를 테스트하려면 어떻게 해야 할까요?

비동기 코드를 테스트하려면 asyncio 모듈을 사용하여 비동기 함수를 정의해야 합니다. doctest에서 비동기 함수를 테스트하는 방법은 아래 예시 코드를 통해 알아보겠습니다.

import asyncio

async def calculate_square(x):
    """
    비동기 함수를 테스트하는 예제

    >>> asyncio.run(calculate_square(2))
    4
    >>> asyncio.run(calculate_square(3))
    9
    """

    return x ** 2

위의 예제 코드에서 calculate_square 함수는 비동기로 실행되며, x의 제곱을 반환합니다. 독스트링에 작성된 예제는 asyncio.run 함수를 사용하여 실행됩니다. 이렇게하면 비동기 함수의 결과를 도출할 수 있습니다.

위의 코드를 실행하기 위해 doctest 모듈을 사용해야 합니다. 따라서 스크립트가 아래와 같은 형태로 작성되어야 합니다.

import doctest

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

이렇게 실행하면 비동기 함수의 독스트링에 포함된 예제 코드를 실행하고, 테스트 결과를 출력할 수 있습니다. 만약 예제 코드가 예상된 결과와 일치한다면, 아무런 출력이 없을 것입니다. 그러나 결과가 예상과 다른 경우, 테스트 결과를 쉽게 확인할 수 있습니다.

이처럼 doctest를 사용하여 비동기 코드를 테스트하는 방법을 소개해드렸습니다. doctest는 비동기 코드를 테스트하는 간단하고 효과적인 방법이며, 비동기 프로그래밍에서도 높은 품질의 코드를 작성하는데 도움이 됩니다.

관련 참고 자료: