[python] pytest에서 Fixture 사용하기

pytest는 Python으로 작성된 강력한 테스팅 프레임워크로, 코드의 동작을 검증하고 수행하는 데 유용합니다. 이번 포스트에서는 pytest의 fixture를 사용하여 테스트를 작성하는 방법에 대해 알아보겠습니다.

Fixture란 무엇인가?

Fixture는 pytest에서 테스트 함수에서 필요한 리소스를 설정하거나 정리하는 데 사용됩니다. 예를 들어, 데이터베이스 연결이나 테스트 데이터를 설정하는 등의 작업을 fixture로 정의하여 테스트 함수에 전달할 수 있습니다.

Fixture 작성하기

fixture는 @pytest.fixture 어노테이션을 사용하여 작성됩니다. 이를 사용하여 테스트 함수에 필요한 리소스를 제공할 수 있습니다. 아래는 fixture를 작성하는 간단한 예시입니다.

import pytest

@pytest.fixture
def setup_data():
    # setup 작업
    data = "example data"
    yield data
    # teardown 작업

위의 예시에서는 setup_data라는 fixture를 정의하고, setup 작업 후에 yield를 사용하여 리소스를 반환합니다. 마지막으로 teardown 작업이 수행됩니다.

Fixture 사용하기

이제 작성한 fixture를 테스트 함수에서 사용하는 방법을 알아봅시다.

def test_example(setup_data):
    assert setup_data == "example data"

위의 코드에서 test_example이라는 테스트 함수에서 setup_data fixture를 사용하여 테스트를 수행합니다.

Fixture의 범위 설정하기

fixture의 범위는 scope 파라미터를 통해 설정할 수 있습니다. 기본적으로는 함수 수준(scope=’function’)으로 설정되지만, 클래스 수준(scope=’class’)이나 모듈 수준(scope=’module’) 등으로 변경할 수 있습니다.

마무리

이렇게 pytest의 fixture를 사용하여 테스트를 작성하면 테스트 코드를 더욱 모듈화하고 재사용 가능한 형태로 관리할 수 있습니다. 효율적인 테스트 작성을 위해 fixture를 적절히 활용해 보세요.

더 많은 pytest의 기능 및 사용법에 대해서는 pytest 공식 문서를 참고하시기 바랍니다.