rut: 영향을 받지 않는 테스트를 건너뛰는 Python 테스트 러너
Source: Dev.to
왜 또 다른 테스트 러너인가?
pytest-incremental은 pytest가 필요합니다. 플러그인 각각은 훌륭하지만, 여러 플러그인을 조합해 일관된 경험을 만들기는 어렵습니다—플러그인끼리 충돌하고, 설정이 깨지기 쉬우며, 상호작용을 디버깅하는 것이 고통스럽습니다.
코드베이스는 급격히 커졌고, AI‑지원 워크플로가 이를 더욱 가속화하고 있습니다. 이에 맞추려면 새로운 테스트 인프라가 필요합니다. 병렬화가 도움이 되지만, 빠른 피드백이 여전히 가장 중요합니다—실행할 필요가 없는 테스트를 건너뛰는 것이 빠르게 실행하는 것보다 낫습니다.
시작하기
pip install rut
# 모든 테스트를 실행하고 의존성 그래프를 구축합니다
rut
# 최근 변경에 영향을 받은 테스트만 실행합니다
rut --changed
작동 원리
rut는 import 그래프를 분석합니다. api.py가 models.py를, models.py가 utils.py를 import하고, utils.py를 수정하면, rut는 세 파일 모두에 대한 테스트를 실행해야 함을 알게 됩니다. utils.py에 의존하지 않는 모듈에 대한 테스트는 건너뛰어집니다.
구조가 잘 잡힌 코드베이스에서는 증분 실행 시 테스트가 50–80 % 정도 감소합니다.
더 읽어보기:
기능
- 의존성‑인식 순서 – 기본 테스트를 먼저 실행해 실패가 근본 원인을 가리키도록 합니다.
- Async 지원 – 내장 기능이며 별도 플러그인이 필요 없습니다.
--dry-run– 실제로 테스트를 실행하지 않고 어떤 테스트가 실행될지 확인합니다.- unittest 호환 –
python -m unittest를 대체하는 드롭‑인 방식입니다.
사용해 보기
pip install rut
rut