[python] doctest에서 테스트가 실패할 경우 이를 처리하는 방법은?
doctest는 파이썬의 내장된 모듈로, 함수나 클래스의 동작을 예제와 함께 문서화하고 테스트할 수 있게 해줍니다. 그러나 때로는 doctest에서 테스트가 실패할 수 있습니다. 이러한 실패를 처리하는 방법에 대해 알아보겠습니다.
- 예외 처리를 사용하기:
import doctest def add(a, b): """ 두 개의 숫자를 더하는 함수입니다. >>> add(2, 3) 5 >>> add('Hello', 'World') Traceback (most recent call last): ... TypeError: unsupported operand type(s) for +: 'int' and 'str' """ try: result = a + b except Exception as e: print(f"테스트가 실패했습니다: {e}") raise return result if __name__ == "__main__": doctest.testmod()
위의 예제에서는
add
함수 내에서 예외 처리를 사용하여 테스트가 실패할 경우 예외를 발생시키고, 실패한 경우에 대한 메시지를 출력합니다. 이렇게하면 테스트가 실패한 이유를 파악할 수 있습니다. - doctest의
REPORTING_FLAGS
를 설정하기:import doctest doctest.FAIL_FAST = False # 테스트 실패 시 바로 중단하지 않음 doctest.REPORTING_FLAGS = ( doctest.DONT_ACCEPT_TRUE_FOR_1 | doctest.DONT_ACCEPT_BLANKLINE | doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE ) def add(a, b): """ 두 개의 숫자를 더하는 함수입니다. >>> add(2, 3) 5 >>> add('Hello', 'World') # 테스트가 실패하지만 중단하지 않음 'HelloWorld' """ result = a + b return result if __name__ == "__main__": doctest.testmod()
위의 예제에서는 doctest 모듈의
REPORTING_FLAGS
를 설정하여 테스트가 실패할 경우 중단하지 않고 계속 진행하도록 합니다. 이 경우, 모든 테스트가 완료된 후 테스트 결과를 볼 수 있습니다.
이러한 방법들을 사용하여 doctest에서 테스트가 실패할 경우 이를 처리할 수 있습니다. 실패한 테스트를 파악하고 수정함으로써 코드의 품질을 개선할 수 있습니다.
참고:
- 파이썬 공식 문서 - doctest: https://docs.python.org/3/library/doctest.html