Python 독테스트(Doctest) - 간단한 테스트 자동화
독테스트(doctest)는 함수나 클래스 등의 독스트링(docstring)에 추가된 사용 예제를 자동으로 테스트하는데 사용됩니다.
최초작성 2023. 12. 20
함수나 클래스 등의 구성과 동작을 설명하기 위해 사용되는 독스트링에 대해서는 다음 포스트를 참고하세요. 본 포스트에서는 독스트링에 추가로 사용 예제를 추가한 후, 테스트하는 데 사용되는 독테스트를 다룹니다.
Python 독스트링(Docstring) 사용법
https://webnautes.tistory.com/2242
두 정수를 더하는 add함수를 정의한 후, 독스트링을 추가하여 함수의 목적, 파라미터, 리턴값에 대한 설명을 추가했습니다. 그리고 나서 함수 사용예제를 추가했습니다. >>> 다음에 함수 호출 예를 적어주고 그다음 줄에 리턴값을 적어주면 됩니다. 예를 들어 add(2,3)을 호출시 5가 리턴된다는 의미로 다음처럼 적습니다.
>>> add(2, 3)
5
add 함수에 추가되어 있는 독스트링의 사용예제를 테스트해보기 위해 다음 두줄의 코드를 다음 예제코드처럼 적어주면 됩니다.
import doctest
doctest.testmod()
def add(a, b): """ 두 정수를 더하는 함수입니다. :param a: (int) 첫 번째 정수. :param b: (int) 두 번째 정수. :return: (int) 두 정수의 합 >>> add(2, 3) 5 >>> add(10, -2) 8 """ return a + b if __name__ == "__main__": import doctest doctest.testmod() |
코드를 실행해보면 에러가 발생하지 않습니다. add 함수의 독스트링에 있는 사용예제가 문제없이 동작했기 때문입니다.
일부러 문제가 발생하도록 독스트링의 사용예제를 다음처럼 수정해봅니다. add(2,3)의 리턴값이 5가 아니라 6이라고 수정합니다.
>>> add(2, 3)
6
코드를 실행시켜보면 다음 메시지가 출력됩니다. add(2, 3) 호출의 결과로 6을 기대했는데 5가 되어서 테스트에 실패했다는 의미입니다.
**********************************************************************
File "/Users/webnautes/Python_Example/test.py", line 9, in __main__.add
Failed example:
add(2, 3)
Expected:
6
Got:
5
**********************************************************************
1 items had failures:
1 of 2 in __main__.add