[파이썬] pytest 옵션과 인자 커스터마이징

pytest는 파이썬으로 작성된 테스트 프레임워크로, 코드의 품질을 유지하고 테스트 작성을 쉽게 만들어줍니다. pytest는 기본적으로 다양한 옵션과 인자를 제공하여 사용자 정의 테스트 환경을 구성할 수 있는 유연성을 제공합니다. 이번 글에서는 pytest의 옵션과 인자를 사용하는 방법에 대해 알아보겠습니다.

pytest 옵션

pytest는 다양한 옵션을 제공하여 테스트 실행에 대한 제어를 할 수 있습니다. 몇 가지 자주 사용되는 옵션을 간단히 살펴보겠습니다.

-s: 표준 출력 보이기

pytest에서 테스트를 실행할 때, 표준 출력은 디폴트로 숨겨져 있습니다. 하지만 -s 옵션을 사용하면 표준 출력을 화면에 보여줍니다. 이를 통해 테스트 중에 출력되는 디버그 정보나 로깅 메시지를 확인할 수 있습니다.

$ pytest -s

-v: 상세한 정보 보기

-v 옵션을 사용하면 pytest는 상세한 정보를 보여줍니다. 이 옵션을 사용하면 각 테스트의 결과와 함께 실행된 테스트 함수의 이름도 표시됩니다. 이는 테스트가 잘 동작하는지 확인하는 데 도움이 됩니다.

$ pytest -v

-x: 실패한 테스트 후 중단

-x 옵션을 사용하면 pytest는 첫 번째로 실패한 테스트를 만나면 테스트 실행을 중단합니다. 이 옵션은 테스트가 실패했을 때 즉시 알려주어 프로세스의 낭비를 줄여줍니다.

$ pytest -x

pytest 인자 커스터마이징

pytest는 인자를 사용하여 테스트를 커스터마이징할 수 있습니다. 몇 가지 자주 사용되는 인자를 살펴보겠습니다.

마커(Markers)

마커는 테스트 함수에 메타데이터를 추가하는 데 사용되는 방법입니다. 특정 테스트 그룹이나 특정 기준으로 테스트를 필터링하고 실행할 수 있게 해줍니다. @pytest.mark 데코레이터를 사용하여 마킹할 수 있습니다.

import pytest

@pytest.mark.smoke
def test_function():
    # 테스트 코드 작성

@pytest.mark.parametrize('arg', [1, 2, 3])
def test_function_with_param(arg):
    # 테스트 코드 작성

위의 예시에서 @pytest.mark.smoketest_function이 스모크 테스트로 마킹된 것을 의미하며, @pytest.mark.parametrizetest_function_with_param이 매개변수화된 테스트로 마킹된 것을 의미합니다.

환경 변수

환경 변수를 사용하여 pytest의 동작을 변경할 수 있습니다. 환경 변수는 테스트 실행 시 커맨드 라인에서 직접 설정하거나, pytest.ini 파일에 설정할 수도 있습니다.

# 테스트 실행 시 환경 변수 설정
$ pytest --setenv ENVIRONMENT=production

# pytest.ini 파일에 환경 변수 설정
[pytest]
env =
    ENVIRONMENT=production

위의 예시에서 ENVIRONMENT라는 환경 변수를 설정하여 pytest 실행 시 해당 변수를 사용할 수 있습니다.

결론

pytest는 옵션과 인자를 사용하여 테스트 환경을 유연하게 커스터마이징할 수 있는 강력한 테스트 프레임워크입니다. 옵션을 사용하여 출력을 제어하거나 실행을 중단할 수 있고, 인자를 사용하여 테스트를 마킹하거나 환경 변수를 설정할 수 있습니다. 이러한 기능을 적절히 활용하여 효율적이고 유용한 테스트를 작성할 수 있습니다.