[python] pytest-mock 라이브러리를 사용한 모킹(Mocking)

pytest-mock 라이브러리는 Python의 테스트 러너 pytest와 함께 사용되어 테스트 도중 모킹(mocking)을 쉽게 할 수 있도록 도와주는 도구입니다. 모킹은 테스트 과정에서 외부 의존성을 가짜 객체로 대체하는 것을 의미하며, 주로 외부 API 호출, 데이터베이스 연결 등을 테스트하는 데 활용됩니다.

모킹이란?

모킹은 테스트를 위해 실제 객체를 대체하는 기술로, 가짜 객체를 사용하여 외부 리소스에 대한 의존성을 제거하고 독립적으로 단위 테스트를 할 수 있도록 도와줍니다. 이를 통해 테스트의 안정성과 신뢰도를 높일 수 있습니다.

pytest-mock를 사용한 모킹 예제

아래 예제는 pytest-mock를 사용하여 모킹하는 간단한 예시입니다.

# test_example.py

import requests

def get_data_from_api():
    response = requests.get('https://api.example.com/data')
    return response.json()

def test_get_data_from_api(mocker):
    mocker.patch('requests.get', return_value={'data': 'mocked_response'})
    data = get_data_from_api()
    assert data == {'data': 'mocked_response'}

위의 예제에서 get_data_from_api 함수는 외부 API를 호출하여 데이터를 가져오는 함수입니다. 이 함수를 테스트할 때 requests.get 메서드를 모킹하여 가짜 응답을 반환하도록 만들었습니다.

pytest-mock의 주요 기능

pytest-mock는 다양한 모킹 기능을 제공합니다. 주요 기능으로는 patch, Mock 클래스, call_count 등이 있습니다. 이러한 기능을 통해 테스트 시나리오에 맞게 모킹을 할 수 있습니다.

결론

pytest-mock을 사용하면 외부 의존성을 가진 코드를 테스트할 때 편리하게 모킹을 할 수 있습니다. 이를 통해 테스트 코드의 안정성과 유지보수성을 높일 수 있으며, 효율적인 테스트 작성을 도와줍니다.

참고 문헌: https://github.com/pytest-dev/pytest-mock