소개
Pytest는 테스트를 검색하고 어설션 결과를 보고하는 것 이상을 수행할 수 있습니다. Python 테스트 도구 모음이 증가함에 따라 반복되는 테스트 논리 및 공유 설정 코드는 테스트를 읽고, 디버그하고, 확장하기 어렵게 만듭니다. 이 모듈에서는 Python 테스트를 읽을 수 있고 유지 관리할 수 있도록 하는 세 가지 pytest 기능인 매개 변수화, 비품 및 기본 제공 monkeypatch 설비에 대해 알아봅니다.
이 모듈에서는 Python 스크립트를 작성하고, 터미널에서 명령을 실행하고, Python 3.10 이상을 사용하여 가상 환경에서 간단한 테스트 테스트를 실행할 수 있다고 가정합니다. Windows 대한 설정 도움말이 필요한 경우 venv 설명서 참조하세요.
매개 변수화는 @pytest.mark.parametrize 여러 인수 집합을 사용하여 동일한 테스트 함수를 실행하고 pytest는 생성된 각 호출을 자체 테스트 항목으로 수집합니다. 픽스처는 일반적으로 @pytest.fixture을 통해 pytest에 등록되는 함수로, 테스트 코드나 다른 픽스처에서 이름을 호출하여 사용할 수 있습니다. 재사용 가능한 값을 반환하면서도 필요에 따라 테스트나 고정 범위 실행이 완료된 후 정리 작업을 수행할 수 있습니다.
monkeypatch 픽스처는 속성, 딕셔너리 항목, 환경 변수, sys.path, 또는 현재 작업 디렉터리를 일시적으로 변경한 뒤, 요청한 테스트나 픽스처가 끝나면 자동으로 원래 상태로 되돌립니다.
이 모듈의 예제는 단위 스타일 테스트이지만 더 큰 통합 또는 기능 테스트 도구 모음에 동일한 피스트 기능이 적용됩니다. 예제에서는 Python assert 문을 사용합니다. pytest는 어설션 확인 기능을 제공하므로 오류 보고서에 표현식의 유용한 값이 포함됩니다.
이러한 기능을 사용하는 경우
- 테스트의 입력을 반복하거나 약간 다른 입력에 대해 거의 중복된 테스트 함수를 복사하는 경우 매개 변수화를 사용합니다. 매개 변수화는 하나의 테스트 정의를 여러 테스트 항목으로 확장하므로 각 입력은 자체 통과/실패 보고서를 가져옵니다.
- 여러 테스트에서 동일한 설정(예: 테스트 데이터, 임시 파일, 데이터베이스 연결)이 필요하거나, 실행 후 예측 가능한 정리가 필요할 때 픽스처를 사용합니다.
- 테스트가 해당 상태를 영구적으로 변경하지 않고 외부 상태(예: 환경 변수, 현재 작업 디렉터리 또는 원격 서비스를 호출하는 함수)에서 코드를 격리해야 하는 경우에 사용합니다
monkeypatch.
먼저 루프와 거의 중복된 테스트를 매개 변수화로 바꿔야 합니다. 그런 다음, 픽스처를 사용하여 설정 및 정리를 공유하고, tmp_path 및 monkeypatch와 같은 기본 제공 픽스처를 검토하며, xUnit 스타일 설정 및 정리 메서드를 픽스처로 리팩터링하는 연습을 수행합니다.
이 모듈을 마치면 이러한 pytest 기능을 적용하여 반복을 줄이고, 적용 범위를 확장하고, Python 테스트 도구 모음에서 오류 진단을 개선할 준비가 됩니다.
자세한 내용은 어설션, 파라미터화 테스트, 픽스처 및 monkeypatch에 대한 pytest 설명서를 참조하세요.