본문 바로가기
성공지식백과 로고성공지식백과
GLOSSARY

테스트 픽스처 (Test Fixture)

중급바이브 코딩

이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 테스트 픽스처 (Test Fixture)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 6개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.

테스트 픽스처(Test Fixture)는 테스트에 필요한 상태와 자원을 준비하고, 사용 뒤 정리하는 구성입니다. 입력 데이터뿐 아니라 객체, 임시 디렉터리, 데이터베이스 연결처럼 실행 전제를 이루는 요소를 포함합니다. 같은 조건에서 테스트를 시작하도록 돕지만, 여러 테스트가 자원을 공유할 때는 변경된 상태가 다음 실행에 넘어가지 않도록 관리합니다.

테스트의 전제 상태와 준비 책임

장바구니 합계를 검사하려면 상품 가격과 수량이 정해져 있어야 합니다. 파일 읽기를 검사하려면 정해진 내용의 파일과 접근할 경로가 필요합니다. Python unittest의 개념 설명은 픽스처에 테스트 준비와 관련 정리 작업을 포함하며, 임시 데이터베이스와 디렉터리, 서버 프로세스를 예로 듭니다. 테스트 입력 한 줄을 넘어 검사 대상이 동작할 환경까지 다루는 개념입니다.

픽스처와 테스트 사례는 맡는 일이 다릅니다. 픽스처가 재고가 없는 상품을 준비하면 테스트 사례는 주문이 거절되는지 판정합니다. 예상 결과와 실제 결과를 비교하는 검사가 빠져 있으면 준비가 끝났어도 기능을 검증한 것은 아닙니다. 이름에도 준비한 조건을 드러내면 실패한 테스트에서 어떤 상태를 전제로 삼았는지 읽기 쉽습니다. 모든 테스트에 필요하지 않은 회원·결제·배송 데이터를 하나로 묶으면 개별 검사의 전제가 흐려집니다.

pytest의 픽스처 사용 안내는 테스트 함수의 매개변수 이름으로 필요한 픽스처를 요청하는 방식을 설명합니다. 픽스처가 다른 픽스처를 요청해 준비 과정을 조합할 수도 있습니다. 회원 객체를 만드는 구성과 그 회원의 주문을 만드는 구성을 분리하면 어느 단계에서 실패했는지 추적하기 쉽습니다. 조합 관계가 복잡해질수록 테스트 본문에서 직접 보이지 않는 준비 작업도 함께 확인합니다.

수명 범위와 테스트 간 격리

픽스처의 스코프는 만든 자원을 얼마 동안 재사용할지 정합니다. 변수 스코프가 이름을 참조할 수 있는 코드 범위라면, 여기서의 스코프는 테스트 자원의 수명과 공유 단위에 관한 설정입니다. pytest의 수명 범위 설명에는 함수·클래스·모듈·패키지·세션 단위가 있습니다. 함수 단위로 새 객체를 만들 때와 세션 전체에서 하나를 쓸 때는 초기화 횟수뿐 아니라 상태가 남는 범위도 달라집니다.

Playwright의 기본 픽스처는 테스트별 페이지와 브라우저 컨텍스트를 격리하면서 브라우저 자체는 공유합니다. 비싼 실행 자원은 함께 쓰고 테스트의 상태는 나눠 갖는 구성입니다. 모든 대상을 새로 생성하는 것만이 격리 방식은 아닙니다. 어디까지 공유하고 어떤 상태를 개별 테스트가 소유하는지 구체적으로 정해야 재사용이 결과에 미치는 영향을 판단할 수 있습니다.

공유 객체를 한 테스트가 수정하면 다음 테스트의 시작 조건이 달라질 수 있습니다. 전체 실행에서만 실패하거나 실행 순서를 바꿀 때 결과가 달라진다면 이런 상태 유입이 조사 대상입니다. 읽기 전용 기준 데이터는 공유하고 변경할 데이터는 테스트별로 생성하는 식으로 경계를 나눕니다. 외부 데이터베이스를 쓰는 경우에는 객체를 새로 만들어도 같은 레코드에 접근할 수 있으므로, 메모리 안의 객체 분리만으로 격리를 확인하지 않습니다.

실패 중의 정리와 재현 가능한 조건

정리 작업은 성공한 테스트 뒤에만 필요한 것이 아닙니다. pytest의 정리 오류 설명에 따르면 yield에 도달하기 전에 픽스처가 예외를 내면 그 yield 뒤의 정리 코드는 실행되지 않습니다. 앞서 성공적으로 준비된 다른 픽스처의 정리는 별도로 시도합니다. 여러 자원을 만든 뒤 한 번에 정리하려는 구성에서는 준비 도중 어느 단계가 실패했는지에 따라 남는 자원이 달라집니다.

자원을 하나 만드는 동작과 그 자원을 해제하는 동작을 가까이 두면 정리 책임을 추적하기 쉽습니다. 회원 생성에 성공한 뒤 파일 생성이 실패한 상황이라면 이미 만든 회원을 누가 지울지 정해져 있어야 합니다. pytest는 안전한 픽스처 구조에서 상태를 바꾸는 동작과 대응 정리를 짝짓는 방향을 설명합니다. 준비 단계의 오류와 검사 실패를 구별해 기록하면 기능 결함을 조사하기 전에 환경 준비 실패를 먼저 해결할 수 있습니다.

페이지나 컨텍스트를 분리하더라도 외부 서비스의 데이터까지 자동으로 초기화되는지는 별도 문제입니다. Playwright의 픽스처 구조는 필요한 자원을 준비하고 사용 후 해제하는 위치를 묶어 관리합니다. 외부 계정이나 레코드를 만드는 사용자 정의 픽스처라면 그 자원의 식별과 정리도 작성 코드의 책임입니다. 시간이나 난수에 좌우되는 입력은 조건을 기록하고, 병렬 테스트가 같은 이름의 자원을 덮어쓰지 않는지 확인합니다.

RELATED TERMS

관련 용어

테스트 픽스처 (Test Fixture)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.