[python] 테스트 더블(Test Double)을 활용한 테스트 작성 방법

테스트 더블(Test Double)은 소프트웨어 테스트에서 실제 객체를 대체하여 독립적으로 테스트하는 기법입니다. 대표적인 테스트 더블로는 모의 객체(Mock), 가짜 객체(Fake), 더미 객체(Dummy) 등이 있습니다.

모의 객체(Mock)

모의 객체는 특정 동작을 흉내내는 객체로, 예상된 호출을 기억하고 호출 여부나 전달된 매개변수 등을 검증할 수 있습니다.

from unittest.mock import Mock

# 모의 객체 생성
mock_obj = Mock()

# 모의 객체의 동작 정의
mock_obj.method.return_value = 10

# 모의 객체의 동작 호출
result = mock_obj.method()

# 모의 객체의 동작 검증
mock_obj.method.assert_called_once()

가짜 객체(Fake)

가짜 객체는 실제로 동작하는 객체처럼 보이지만, 범위가 더 작거나 단순한 형태로 구현된 객체로 예를 들어 메모리에만 데이터를 저장하는 등의 간단한 기능만을 제공합니다.

class FakeDB:
    def __init__(self):
        self.data = {}

    def save(self, key, value):
        self.data[key] = value

    def load(self, key):
        return self.data.get(key)

# 가짜 객체 활용
fake_db = FakeDB()
fake_db.save('k1', 'v1')
result = fake_db.load('k1')

더미 객체(Dummy)

더미 객체는 인터페이스만 구현되어 호출은 가능하지만, 실제 동작이 구현되어 있지 않은 객체입니다. 더미 객체는 테스트 목적으로 필요한 최소한의 기능만을 갖도록 구현됩니다.

class DummyService:
    def process(self, data):
        pass

# 더미 객체 활용
dummy_service = DummyService()
result = dummy_service.process({'key': 'value'})

테스트 더블을 활용하여 실제 객체의 의존성을 줄이고 독립적인 테스트를 작성함으로써 소프트웨어의 품질을 향상시킬 수 있습니다.

참고 자료

위의 내용은 파이썬을 사용한 테스트 더블(Test Double)을 활용한 테스트 작성 방법에 대한 예시입니다.