[python] doctest를 사용하여 복잡한 데이터 구조를 테스트하는 방법은?
doctest는 파이썬의 표준 라이브러리에 포함된 모듈로, 코드의 예제와 결과를 문서화하고 동시에 테스트하는 도구입니다. 복잡한 데이터 구조를 테스트하기 위해 doctest를 사용하는 방법에 대해 알아보겠습니다.
-
데이터 구조 및 함수 작성 테스트하려는 복잡한 데이터 구조와 관련 함수를 작성해야 합니다. 예를 들어, 다음과 같은 리스트를 가진 클래스를 테스트해보겠습니다.
class MyList: def __init__(self, values): self.values = values def length(self): return len(self.values) def sum(self): return sum(self.values)
-
doctest 작성 doctest는 코드 안에 인라인으로 작성할 수 있습니다. 함수와 메소드 정의 바로 아래에 작성하며, »> 표시를 사용하여 예상 결과를 작성합니다.
class MyList: # ... def length(self): """ >>> MyList([1, 2, 3]).length() 3 >>> MyList([]).length() 0 """ return len(self.values) # ...
여기서는
length
메소드의 예제들을 작성했습니다. 리스트의 길이를 반환하는 메소드이므로, 예상 결과와 실제 결과를 비교하여 테스트합니다. -
테스트 실행 작성한 doctest를 실행하여 테스트할 수 있습니다. 모듈 레벨에서 테스트하는 경우, 아래와 같이 코드를 추가해야 합니다.
if __name__ == "__main__": import doctest doctest.testmod()
이제 코드를 실행하면 doctest가 예상 결과와 실제 결과를 비교하여 테스트를 수행합니다.
$ python my_list.py -v ... Ran X tests in Y seconds (Z passed, 0 failed)
-v
옵션을 사용하면 세부 정보를 출력해줍니다.
이제 doctest를 사용하여 복잡한 데이터 구조를 테스트하는 방법을 알게 되었습니다. doctest는 코드 예제를 문서화하는 동시에 효과적인 테스팅 도구로 활용할 수 있습니다. 자세한 내용은 파이썬 공식 문서에서 확인할 수 있습니다.