Pytest 설정 파일 pytest.ini 활용 가이드

매번 터미널에서 -v, -s 같은 명령줄 옵션을 입력하는 것은 번거롭습니다. Pytest의 설정 파일인 pytest.ini를 사용하면 이러한 번거로움을 해결하고 테스트 실행 방식을 효율적으로 제어할 수 있습니다.

pytest.ini 기본 개념

pytest.ini는 Pytest의 메인 설정 파일로, 테스트 실행 방식을 변경하는 데 사용됩니다. 파일명은 반드시 pytest.ini여야 하며, 일반적으로 프로젝트 루트 디렉토리에 위치합니다. 터미널에서 pytest -h 명령어를 입력하면 pytest.ini에서 사용 가능한 다양한 설정 옵션을 확인할 수 있습니다. 설정 옵션의 수가 많아 처음에는 부담스러울 수 있지만, 실제 자주 사용하는 옵션은 몇 가지로 한정됩니다.

핵심 설정 옵션

addopts: 기본 명령줄 옵션 설정

addopts는 Pytest가 실행될 때 자동으로 포함시킬 명령줄 옵션을 지정합니다.

[pytest]
addopts = -v -s

위와 같이 설정하면 터미널에서 pytest만 입력해도 -v-s 옵션이 자동으로 적용됩니다. -v는 상세 출력, -s는 print 문 출력을 허용합니다.

testpaths: 테스트 디렉토리 지정

testpaths는 Pytest가 테스트를 탐색할 디렉토리를 지정합니다.

[pytest]
addopts = -v -s
testpaths = tests

예를 들어, 프로젝트 루트에 testsintegration 디렉토리가 모두 있고, testpaths = tests로 설정하면 tests 디렉토리 내의 테스트만 실행됩니다.

python_files: 실행할 파일 이름 패턴

python_files는 실행할 테스트 파일의 이름 패턴을 지정합니다.

[pytest]
addopts = -v -s
testpaths = tests
python_files = test_*.py

이 설정은 tests 디렉토리에서 test_로 시작하는 .py 파일만 찾아서 실행합니다. test_login.py, test_api.py 등이 해당되며, helper.py 같은 파일은 무시됩니다.

python_classes: 실행할 클래스 이름 패턴

python_classes는 실행할 테스트 클래스의 이름 패턴을 지정합니다.

[pytest]
addopts = -v -s
testpaths = tests
python_files = test_*.py
python_classes = Test*

예를 들어, test_sample.py 파일에 TestUser 클래스와 ProfileTest 클래스가 있다면, 위 설정에서는 Test로 시작하는 TestUser 클래스만 실행되고 ProfileTest는 무시됩니다.

python_functions: 실행할 함수 이름 패턴

python_functions는 실행할 테스트 함수나 메소드의 이름 패턴을 지정합니다.

[pytest]
addopts = -v -s
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*

이 설정은 test_로 시작하는 함수나 메소드만 실행합니다. 예를 들어, TestUser 클래스에 test_logincheck_profile 메소드가 있다면 test_login만 실행됩니다.

실제 적용 예시

# test_sample.py
import pytest

class TestUser:
    def test_login_valid(self):
        print("로그인 테스트 실행")
        assert True

    def test_login_invalid(self):
        print("로그인 실패 테스트 실행")
        assert True

    def check_password(self):
        print("비밀번호 확인")
        assert True

class ProfileTest:
    def test_profile_view(self):
        print("프로필 보기 테스트")
        assert True

위 설정을 적용하면 test_sample.py 파일의 TestUser 클래스 내 test_login_validtest_login_invalid 메소드만 실행되며, check_password 메소드와 ProfileTest 클래스의 test_profile_view는 실행되지 않습니다.

태그: Pytest INI configuration test-automation python-testing

7월 13일 00:13에 게시됨