[파이썬] pytest 커스텀 마크 생성하기

pytest는 우리가 파이썬으로 작성한 코드를 테스트하기 위한 강력한 테스팅 프레임워크입니다. 기본적으로 pytest는 함수나 메서드의 테스트를 위해 @pytest.mark를 사용하며, 이를 통해 테스트에 대한 마크를 지정할 수 있습니다. 하지만 때때로 우리는 더욱 특화된 커스텀 마크가 필요할 수 있습니다.

이번 블로그에서는 pytest에서 커스텀 마크를 생성하는 방법에 대해서 알아보겠습니다.

1. 마크 생성하기

pytest에서 커스텀 마크를 생성하기 위해서는 pytest_configure라는 훅을 사용합니다. 이 훅은 pytest가 초기화될 때 호출되며, 여기에서 마크를 등록할 수 있습니다. 다음은 my_custom_mark라는 커스텀 마크를 생성하는 예시입니다.

import pytest

def pytest_configure(config):
    config.addinivalue_line("markers", "my_custom_mark: my custom mark")

여기에서 config.addinivalue_line("markers", "my_custom_mark: my custom mark")를 사용하여 my_custom_mark라는 이름의 마크를 등록하고, 해당 마크에 대한 설명을 추가하였습니다.

2. 마크 사용하기

마크를 사용하기 위해서는 @pytest.mark.<mark_name>을 테스트 함수나 메서드 위에 추가합니다. 다음은 my_custom_mark를 사용하여 테스트를 작성하는 예시입니다.

import pytest

@pytest.mark.my_custom_mark
def test_custom_mark():
    assert 1 == 1

위의 예시에서 @pytest.mark.my_custom_mark를 사용하여 test_custom_mark라는 테스트 함수에 my_custom_mark 마크를 추가했습니다. 이렇게 마크를 추가하면 해당 테스트 함수를 실행할 때 pytest는 해당 마크를 가진 테스트만 실행하도록 필터링합니다.

3. 마크 필터링하기

pytest에서 마크를 사용하면 특정 마크를 가진 테스트만 필터링하여 실행할 수 있습니다. 다음은 마크를 필터링하여 실행하는 방법에 대한 예시입니다.

$ pytest -m <mark_name>

위의 예시에서 <mark_name>에는 실행하고 싶은 마크의 이름을 넣으면 됩니다. 예를 들어, my_custom_mark를 가진 테스트만 실행하고자 한다면 다음과 같이 실행합니다.

$ pytest -m my_custom_mark

마무리

pytest의 커스텀 마크 기능을 활용하면 테스트를 보다 효과적으로 구분하고 관리할 수 있습니다. 이번 블로그에서는 pytest에서 커스텀 마크를 생성하는 방법과 그 활용법에 대해서 알아보았습니다. 커스텀 마크를 사용하여 테스트를 더욱 구조적으로 작성하고 관리해보세요!