위키득계정 ↗
기술

Pytest-timeout

Pytest-timeout기술
분류
시험 시간 제한 플러그인
적용 환경
pytest
제한 단위
초
중단 방식
스레드 또는 시그널
Pytest-timeout는 지나치게 오래 실행되는 pytest 시험을 제한 시간에 중단하는 플러그인이다. 멈춘 시험의 스레드 스택을 출력해 교착이나 무한 대기의 원인을 조사하는 데 활용한다.

제한 시간의 목적

정해진 시간 안에 끝나지 않는 시험을 감지한다. 정확한 실행 시간을 측정하거나 성능 회귀를 판정하기 위한 도구와는 목적이 다르다. 일반 설정과 환경 변수, 명령줄 또는 개별 표시로 제한을 정하며 설치만으로 모든 시험에 제한이 적용되지는 않는다.

중단 방식의 차이

스레드 방식은 제한을 넘으면 프로세스 전체를 종료할 수 있어 정리 작업이나 보고서 생성이 완료되지 않을 수 있다. 지원하는 환경에서는 시그널 방식으로 시험을 중단하고 실행을 이어갈 수 있다. 시험 대상이 같은 시그널을 사용하면 충돌 가능성도 고려한다.

준비와 정리의 시간

기본적인 제한 범위에는 시험 본문 외에 관련 픽스처의 준비와 정리 시간이 포함된다. 오래 걸린 위치가 본문인지 준비 작업인지 구분해야 원인을 좁힐 수 있다. 제한을 줄이는 것과 대기의 근본 원인을 해결하는 것은 별개의 작업이다.

관련 문서

Pytest-xdist / Pytest-asyncio / Pytest-mock / Time-machine