Pytest는 Python에서 사용되는 테스트 프레임워크로, 간편한 사용법과 강력한 기능을 제공합니다. 이 중에서도 메타 데이터는 테스트 스위트와 테스트 함수에 관련된 추가 정보를 제공하는 데 사용될 수 있습니다. 이 글에서는 pytest에서 메타 데이터를 어떻게 사용하는지 알아보겠습니다.
테스트 스위트에 메타 데이터 추가하기
pytest.ini
또는 setup.cfg
파일을 사용하여 테스트 스위트에 대한 메타 데이터를 정의할 수 있습니다. 이를 통해 테스트 실행 옵션, 환경 변수, 테스트 런너 등을 구성할 수 있습니다. 다음은 pytest.ini
파일을 사용하여 테스트 스위트의 메타 데이터를 정의하는 예시입니다.
# pytest.ini
[pytest]
test_suite_name = MyTestSuite
env_vars = USERNAME=guest PASSWORD=pass123
위의 예시에서는 test_suite_name
과 env_vars
라는 두 가지 메타 데이터를 정의하였습니다. 이 테스트 스위트에는 MyTestSuite
라는 이름과 USERNAME=guest
, PASSWORD=pass123
라는 환경 변수가 사용되게 됩니다.
테스트 함수에 메타 데이터 추가하기
테스트 함수마다 특정한 메타 데이터를 추가하여 테스트 실행 옵션을 변경하거나 테스트 케이스를 분류할 수 있습니다. 이를 위해서는 @pytest.mark
데코레이터와 함께 사용할 수 있는 다양한 메타 데이터가 제공됩니다. 다음은 몇 가지 예시입니다.
import pytest
@pytest.mark.skip(reason="테스트 준비 중")
def test_something():
assert True
@pytest.mark.parametrize("input, output", [("hello", "HELLO"), ("world", "WORLD")])
def test_uppercase(input, output):
assert input.upper() == output
@pytest.mark.slow
def test_performance():
# 퍼포먼스 테스트 실행 로직
assert True
위의 예시에서는 @pytest.mark.skip
을 사용하여 test_something
함수가 테스트 준비 중임을 나타내고 있습니다. @pytest.mark.parametrize
를 사용하여 test_uppercase
함수를 여러 번 반복실행하며 다른 입력과 출력을 테스트할 수 있습니다. @pytest.mark.slow
를 사용하여 test_performance
함수가 퍼포먼스 테스트인 것을 나타내고 있습니다.
메타 데이터 사용하여 테스트 실행하기
메타 데이터를 추가한 후에는 해당 메타 데이터를 기준으로 테스트를 실행할 수 있습니다. 명령줄에서 pytest
를 실행할 때 --markers
옵션을 사용하면 메타 데이터의 종류와 설명을 확인할 수 있습니다. 예를 들어, --markers
옵션으로 실행한 결과는 다음과 같습니다.
$ pytest --markers
@skip(reason): 테스트를 건너뛰기 위한 메타데이터
@parametrize(argnames, argvalues): 테스트 케이스(parameterized test cases) 생성을 위한 메타데이터
@slow: 테스트가 성능 테스트인 것을 나타내는 메타데이터
또한, 메타 데이터를 기준으로 테스트를 실행할 때는 -m
옵션을 사용합니다. 예를 들어, @slow
메타 데이터를 가진 테스트만 실행하고 싶다면 다음과 같이 명령을 입력합니다.
$ pytest -m slow
이와 같이 pytest의 메타 데이터 기능을 사용하면 쉽게 테스트 스위트와 테스트 함수에 대한 추가 정보를 제공하고, 필요에 따라 테스트 실행을 제어할 수 있습니다.
추가적인 pytest의 메타 데이터에 대한 정보는 pytest 공식 문서에서 확인할 수 있습니다.