테스트는 소프트웨어 개발 과정에서 필수적인 요소입니다. 하지만 특정 조건에 따라 테스트를 실행하거나 제외하는 상황이 발생할 수 있습니다. 이러한 상황을 처리하기 위해 pytest는 다양한 조건부 테스트 실행 기능을 제공합니다. 이 블로그 포스트에서는 pytest를 사용하여 조건부 테스트를 실행하는 방법에 대해 알아보겠습니다.
@pytest.mark 조건부 테스트
pytest에서는 특정 테스트를 실행 또는 제외하기 위해 @pytest.mark
어노테이션을 사용할 수 있습니다. 이 어노테이션을 사용하여 테스트에 태그를 지정하고, 테스트를 실행할 때 해당 태그를 기준으로 테스트를 선택하는 것이 가능합니다.
import pytest
@pytest.mark.slow
def test_function1():
# Slow test case code
@pytest.mark.fast
def test_function2():
# Fast test case code
@pytest.mark.slow
def test_function3():
# Another slow test case code
위의 예제 코드에서는 @pytest.mark.slow
와 @pytest.mark.fast
어노테이션을 사용하여 각각 test_function1
, test_function2
, test_function3
함수에 태그를 지정했습니다.
특정 태그를 가진 테스트 실행하기
pytest에서는 -m
옵션을 사용하여 특정 태그를 가진 테스트만 실행할 수 있습니다. 예를 들어, @pytest.mark.slow
태그를 가진 테스트만 실행하고 싶다면 아래와 같이 명령어를 실행합니다.
pytest -m slow
이 명령어를 실행하면 @pytest.mark.slow
어노테이션이 부여된 test_function1
과 test_function3
이 실행됩니다. @pytest.mark.slow
어노테이션이 부여된 테스트만 실행되고, 나머지 테스트는 실행되지 않습니다.
특정 태그를 가진 테스트 제외하기
pytest에서는 -m
옵션에 not
키워드를 사용하여 특정 태그를 가진 테스트를 제외할 수도 있습니다. 예를 들어, @pytest.mark.slow
태그를 가진 테스트를 제외하고 싶다면 아래와 같이 명령어를 실행합니다.
pytest -m "not slow"
이 명령어를 실행하면 @pytest.mark.slow
어노테이션이 부여된 test_function1
과 test_function3
이 실행되지 않습니다. @pytest.mark.slow
어노테이션이 부여되지 않은 테스트만 실행됩니다.
조건부 테스트 실행하기
pytest에서는 추가적으로 --runxfail
옵션을 사용하여 실패한 테스트를 실행하게 할 수 있습니다. 실패한 테스트에 @pytest.mark.xfail
어노테이션이 부여되어 있다면, 해당 테스트는 실패한 상태로 실행되고, 나머지 테스트는 정상적으로 실행됩니다.
pytest --runxfail
위의 명령어는 @pytest.mark.xfail
어노테이션이 부여된 실패한 테스트만 실행합니다. 실패한 테스트는 프로그램에 영향을 끼치지 않고 실행되므로, 다른 테스트를 진행하는 동안 실패한 테스트를 분석하고 수정하는 데 유용합니다.
이렇게 pytest에서는 @pytest.mark
어노테이션을 사용하여 조건부 테스트를 실행하거나 제외하는 다양한 방법을 제공합니다. 이를 통해 프로젝트에서 특정 조건에 따라 테스트를 유연하게 관리할 수 있습니다.