[파이썬] pytest 조건부 테스트 실행

소개

테스트 코드는 소프트웨어 개발의 핵심 요소 중 하나입니다. 테스트 코드를 작성하는 도중, 특정 조건을 만족할 경우에만 테스트를 실행하고 싶을 수 있습니다. 이때 Pytest에서는 조건부 테스트 실행을 지원합니다. 이 기능을 사용하면 특정 조건을 만족하는 경우에만 테스트가 실행됩니다.

조건부 테스트 실행하기

Pytest에서 조건부 테스트를 실행하기 위해서는 pytest.mark 모듈과 @pytest.mark 데코레이터를 사용해야 합니다. 다음은 조건부 테스트를 실행하는 예제 코드입니다.

import pytest

@pytest.mark.skipif(condition, reason="Some reason")
def test_my_function():
    # 테스트 코드 작성
    assert ...

@pytest.mark.xfail(condition, reason="Some reason")
def test_another_function():
    # 테스트 코드 작성
    assert ...

위의 코드에서 condition 부분에는 테스트를 실행할지 말지를 결정하는 조건을 작성합니다. 조건은 True 또는 False 값을 반환하는 함수를 사용하거나, 데코레이터로 전달된 매개변수와 비교하는 등의 방식으로 작성할 수 있습니다.

@pytest.mark.skipif 데코레이터는 조건이 True인 경우 해당 테스트를 건너뛰게 됩니다. 반면, @pytest.mark.xfail 데코레이터는 조건이 True인 경우 해당 테스트를 실행하지만 실패로 표시됩니다.

예제

다음은 조건부 테스트를 실행하는 예제입니다. 예제에서는 특정 조건이 만족될 때만 테스트가 실행되는 것을 확인할 수 있습니다.

import pytest

def is_even(num):
    return num % 2 == 0

@pytest.mark.skipif(not is_even(4), reason="Skip test if not even")
def test_even_number():
    assert is_even(4)

@pytest.mark.xfail(is_even(5), reason="Expect failure if odd")
def test_odd_number():
    assert is_even(5)

위의 예제에서 test_even_number 함수는 is_even 함수의 결과가 True인 경우에만 실행됩니다. 따라서 이 테스트는 실행되며, assert 문이 통과됩니다. 반면, test_odd_number 함수는 is_even 함수의 결과가 False인 경우에만 실행됩니다. 이 테스트는 실패로 표시되며, assert 문이 통과되지 않습니다.

결론

Pytest의 조건부 테스트 실행 기능을 사용하면 특정 조건을 만족하는 경우에만 테스트를 실행할 수 있습니다. 이는 테스트 시나리오를 효율적으로 관리하고, 필요한 테스트 케이스만 실행하여 개발 생산성을 향상시키는 데 도움이 됩니다.