fixture는 pytest의 핵심 개념입니다.
「테스트가 필요로 하는 사전 준비물(DB 연결·임시 파일·테스트 데이터)을 함수로 정의하고 자동 주입」하는 메커니즘.
의존성 주입의 테스트 버전.
기본 사용.
import pytest.
@pytest.fixture def sample_data(): return [1, 2, 3].
def test_sum(sample_data): assert sum(sample_data) == 6.
테스트 함수의 인자 이름이 fixture 이름과 일치하면 자동으로 주입됨.
yield로 정리 코드.
@pytest.fixture def temp_file(): f = open("tmp", "w"); yield f; f.close(); os.remove("tmp").
yield 다음은 테스트 종료 후 실행.
setUp/tearDown을 한 함수에 깔끔히.
scope로 생성 빈도 제어.
@pytest.fixture(scope="function")(기본, 테스트마다), "class", "module", "session"(전체 1회).
DB 연결 같은 비싼 자원은 session으로 한 번만 만들어 재사용.
conftest.py — 공유 fixture.
같은 폴더의 conftest.py에 fixture 정의하면 그 폴더의 모든 테스트가 자동으로 접근 가능.
별도 import 없음.
테스트 코드의 중복 제거에 핵심.
한 줄 요약
pytest fixture는 사전 준비물을 함수로 정의·자동 주입합니다.
yield로 정리, scope로 생성 빈도, conftest.py로 공유.
테스트의 핵심 추상화.
더 알아볼 것
- fixture 의존성 — fixture가 fixture 사용
- autouse=True — 자동 적용
- factory fixture 패턴