[python] doctest와 unittest의 차이점은 무엇인가요?

doctest와 unittest는 Python에서 테스트를 작성하기 위해 사용되는 두 가지 주요 모듈입니다. 둘 다 테스트를 작성하고 실행하는 데 사용되지만 몇 가지 차이점이 있습니다.

  1. 사용법 및 문법:
    • doctest: 함수 또는 모듈의 docstring에 테스트를 작성하는 것이 특징입니다. 테스트 케이스는 인터프리터의 대화식 세션과 같이 보이기 때문에 사용법을 보다 쉽게 이해할 수 있습니다.
    • unittest: 테스트 케이스 클래스를 작성하고, assert문을 사용하여 테스트 케이스를 작성하는 것이 특징입니다. 테스트 케이스 간에 공유할 수 있는 setUp() 및 tearDown() 메서드 등 추가적인 기능을 제공합니다.
  2. 테스트 범위:
    • doctest: 주로 모듈의 예제 코드나 독스트링 내의 코드에 대한 테스트에 사용됩니다. 작은 규모의 테스트에는 적합하지만, 복잡한 테스트 케이스를 작성하기에는 한계가 있을 수 있습니다.
    • unittest: 큰 규모의 테스트를 위해 사용됩니다. 단위 테스트, 통합 테스트 등을 작성할 수 있으며, 테스트 케이스 간의 종속성을 관리할 수 있습니다.
  3. 실행 방법:
    • doctest: 모듈의 docstring에 포함된 테스트를 실행하려면 doctest 모듈을 직접 호출하면 됩니다. 모든 테스트를 자동으로 수행하며, 결과가 일치하지 않으면 오류가 발생합니다.
    • unittest: 작성된 테스트를 실행하려면 unittest 모듈을 사용하여 테스트를 실행하는 커맨드를 실행하면 됩니다. 테스트를 실행하고 결과를 보고하는 기능을 제공합니다.
  4. 유지 보수 및 확장성:
    • doctest: 코드와 테스트가 함께 위치하므로 유지 보수가 상대적으로 쉽습니다. 코드 변경에 따라 테스트도 함께 업데이트해야 할 수 있습니다. 그러나 기능의 확장성은 제한적일 수 있습니다.
    • unittest: 테스트 케이스 클래스로 작성된 테스트는 코드와 분리되어 있기 때문에 유지 보수가 용이합니다. 새로운 테스트 케이스를 작성하거나 기존 테스트를 확장하는 데 용이합니다.

doctest와 unittest는 각각의 특징을 가지고 있으며, 테스트 작성에 있어서 필요한 경우 어느 것을 선택할지는 개발자의 취향과 상황에 따라 다를 수 있습니다.

참고 자료: