[python] 파이썬 unittest.mock 모듈의 활용 방법

unittest.mock 모듈은 파이썬에서 테스트 더블(mock, stub, spy 등)을 생성하고 테스트 중에 실행 중인 코드를 모의(mock)하는데 사용됩니다. 이 모듈은 유닛 테스트를 작성할 때 실제 의존성을 가지는 객체를 피하고 테스트를 더 격리된 환경에서 실행할 수 있도록 해줍니다.

모의 객체(Mock Object) 만들기

unittest.mock 모듈을 사용하여 모의 객체를 만들기 위해서는 Mock 클래스를 사용합니다. 다음은 Mock을 사용하여 모의 객체를 만드는 간단한 예제입니다.

from unittest.mock import Mock

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

모의 객체의 동작 정의하기

모의 객체의 동작을 정의하여 원하는 대로 동작하도록 할 수 있습니다. 예를 들어, 모의 객체가 특정 메서드를 호출했을 때 원하는 값을 반환하도록 설정할 수 있습니다.

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

모의 객체를 사용한 테스트

모의 객체를 사용하여 테스트를 작성할 때, 실제 객체 대신에 모의 객체를 사용하여 의존성을 격리할 수 있습니다.

def my_function(obj):
    # obj의 some_method 호출
    result = obj.some_method()

    # 결과에 따라 동작 결정
    if result > 5:
        return "Large"
    else:
        return "Small"

모의 객체를 사용하여 실제 의존성을 피하고 my_function을 테스트하는 예시입니다.

from unittest.mock import Mock
import my_module

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

    # 모의 객체의 동작 정의
    mock_obj.some_method.return_value = 6

    # 테스트 대상 함수 호출
    result = my_module.my_function(mock_obj)

    # 결과 검증
    assert result == "Large"

unittest.mock 모듈은 유닛 테스트를 작성할 때 의존성을 격리하고 테스트의 신뢰성을 높이는 데 큰 도움을 줍니다.

더 많은 자세한 내용은 공식 문서를 참고하시기 바랍니다.

위에서 살펴본 내용은 unittest.mock 모듈의 주요 기능에 대한 간단한 소개에 불과합니다. 실제 활용 방법은 응용 프로그램의 요구 사항 및 개발 환경에 따라 다를 수 있습니다.