[python] 테스트 더블 목적과 종류

테스트 더블은 소프트웨어 테스트를 위해 사용되는 객체입니다. 이 객체는 실제 의존성을 가지는 개체를 대신하여 테스트 중에 사용됩니다. 테스트 더블의 주요 목적은 테스트를 격리시키고 테스트 실행을 더 빠르고 간편하게 만드는 것입니다.

종류

  1. 테스트 스텁(Stub): 특정 입력에 대해 미리 정의된 출력을 반환하는 인터페이스입니다. 주로 외부 의존성을 시뮬레이션하는 데 사용됩니다.

  2. 테스트 스파이(Spy): 호출된 메서드의 정보(예: 호출 횟수, 전달된 매개변수)를 기록하는 객체입니다. 테스트 중에 메서드 호출을 추적하고 검증하는 데 사용됩니다.

  3. 가짜(Fake): 실제 구현이 존재하는 객체를 대체하여 사용됩니다. 예를 들어 운영 환경에서 사용되는 데이터베이스를 대신하여 가짜 데이터베이스를 사용하여 테스트를 수행할 수 있습니다.

  4. 모의(Mock): 특정 메서드 호출에 대한 기대값을 설정하고 이러한 호출이 발생했는지 여부를 확인할 수 있는 객체입니다. 특정 상황을 시뮬레이션하거나 테스트 중에 특정 동작을 강제할 때 사용됩니다.

  5. 더미(Dummy): 매개변수를 채우기 위해 사용되지만 실제로는 호출되지 않는 객체입니다. 특정 메서드를 호출할 때 필요한 매개변수만 제공하는 데 사용됩니다.

위와 같이 테스트 더블의 다양한 종류를 적절히 활용하여 효과적인 유닛 테스트를 수행할 수 있습니다.

Reference: pytest 공식 문서