[python] doctest를 사용하여 사용자 입력을 테스트하는 방법은?

doctest는 Python의 표준 라이브러리로 제공되는 모듈이며, 함수 또는 메소드의 예제와 해당 예제에 대한 기대 결과를 테스트하는 데 사용됩니다. 사용자 입력을 테스트하는 방법은 다음과 같은 단계로 수행할 수 있습니다:

  1. 테스트하고자 하는 함수 또는 메소드를 정의합니다. 이 함수 또는 메소드는 사용자 입력을 받는 부분이 포함되어야 합니다.

  2. 테스트 케이스를 작성합니다. 이는 함수 또는 메소드의 예제 호출과 예상 결과를 포함하는 문자열로 작성됩니다. 예를 들어, 다음과 같은 테스트 케이스를 작성할 수 있습니다:

    """
    >>> get_user_input()
    Please enter your name: John
    'John'
    """
    

    이 예제에서는 ‘get_user_input()’ 함수가 사용자로부터 이름을 입력받고 해당 이름을 반환한다고 가정합니다. 테스트 케이스에서는 ‘get_user_input()’ 함수를 호출하고 사용자 입력으로 ‘John’을 제공하며, 예상 결과로 ‘John’을 기대합니다.

  3. doctest.testmod() 함수를 호출하여 테스트를 실행합니다. 이는 모든 테스트 케이스를 실행하고 예상 결과와 실제 결과를 비교하는 역할을 합니다. 예를 들어:

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

    이 코드는 현재 모듈이 메인 모듈로 실행될 때만 doctest.testmod() 함수를 호출하여 테스트를 실행합니다.

  4. 테스트를 실행합니다. 테스트 결과는 콘솔에 표시됩니다. 만약 모든 테스트 케이스가 성공한다면 아무런 메시지가 표시되지 않습니다. 그러나 테스트 실패가 있다면 해당 테스트 케이스의 예상 결과와 실제 결과를 비교하여 실패한 부분이 표시됩니다.

doctest를 사용하여 사용자 입력을 테스트하는 것은 간단하고 효과적인 방법입니다. 함수 또는 메소드가 예상한 대로 작동하는지 확인할 수 있으며, 사용자 입력에 대한 예외 상황도 쉽게 테스트할 수 있습니다.