[파이썬] pytest 외부 데이터와 함께 테스트하기

소개

pytest는 파이썬으로 작성된 강력한 테스트 프레임워크입니다. pytest를 사용하면 간단하고 가독성이 높은 테스트 코드를 작성할 수 있습니다. 이번 블로그 포스트에서는 pytest를 사용하여 외부 데이터와 함께 테스트하는 방법을 살펴보겠습니다.

외부 데이터로 테스트하기

클라이언트-서버 애플리케이션을 테스트하거나 데이터베이스와 상호 작용하는 코드를 테스트해야 할 때, 테스트에 사용할 외부 데이터를 어떻게 제공할 수 있을까요? pytest에서는 fixture 기능을 사용하여 간단하게 외부 데이터를 테스트에 사용할 수 있습니다.

Fixture 정의하기

fixture는 pytest에서 데이터 또는 객체를 생성하고 제공하는 메커니즘입니다. 외부 데이터를 사용하기 위해 fixture를 정의하려면 @pytest.fixture 데코레이터와 함께 함수를 작성해야 합니다. 다음은 외부 데이터를 로깅하는 간단한 예제입니다.

import pytest

@pytest.fixture
def external_data():
    data = ["data1", "data2", "data3"]
    return data

def test_external_data(external_data):
    for item in external_data:
        print(item)

Fixture 사용하기

test_로 시작하는 테스트 함수에서 fixture를 사용하려면 해당 함수의 인자로 fixture 이름을 사용하면 됩니다. pytest는 테스트 함수 실행 전에 fixture 함수를 호출하고 그 결과를 테스트 함수에 전달합니다. 위의 예제에서는 external_data fixture 함수를 test_external_data 테스트 함수에서 사용합니다.

파라미터화된 Fixture

실제 애플리케이션 개발에서는 단일 fixture 인스턴스만으로는 충분하지 않을 수 있습니다. 예를 들어, 동일한 테스트를 다른 데이터셋으로 여러 번 실행해야 할 수 있습니다. pytest에서는 fixture 함수에 @pytest.mark.parametrize 데코레이터를 사용하여 파라미터화된 fixture를 작성할 수 있습니다.

import pytest

@pytest.fixture(params=["data1", "data2", "data3"])
def external_data(request):
    return request.param

def test_external_data(external_data):
    print(external_data)

마치며

pytest는 외부 데이터와 함께 테스트하기 위한 간단하고 유연한 기능을 제공합니다. fixture를 사용하여 클라이언트-서버 애플리케이션 또는 데이터베이스와 상호 작용하는 코드를 손쉽게 테스트할 수 있습니다.

pytest의 다양한 기능을 활용하여 테스트 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 외부 데이터와 함께 테스트할 때는 fixture를 활용하여 테스트에 필요한 데이터를 쉽게 제공할 수 있습니다.

추가 자료: