위키득계정 ↗
기술

Pytest-socket

Pytest-socket기술
분류
시험 네트워크 제한 플러그인
제어 계층
Python socket
범위 설정
전체 실행과 개별 시험
허용 기준
호스트와 IP 및 네트워크 범위
Pytest-socket은 pytest 실행 중 Python socket 인터페이스를 통한 통신을 막거나 허용 범위로 제한하는 플러그인이다. 의도하지 않은 네트워크 의존성을 발견하는 데 활용한다.

네트워크 의존성의 발견

통신을 차단한 상태에서 실행하면 실제 네트워크에 접근하려는 코드를 찾을 수 있다. socket 인터페이스를 통한 DNS 조회도 제어 대상이다. 운영체제 전체의 방화벽이 아니라 Python 호출 계층의 시험 도구이므로 그 범위 안에서 해석해야 한다.

허용 대상의 구성

특정 호스트나 IP, CIDR 범위를 허용하고 필요한 시험에서는 통신을 켤 수 있다. Unix 도메인 소켓도 선택적으로 허용한다. 비동기 코드나 로컬 서비스 시험처럼 일부 통신이 필요한 경우 전체 차단과 예외를 함께 설계한다.

픽스처 수명의 영향

픽스처가 먼저 준비되는지와 어느 범위를 공유하는지에 따라 제한 적용 시점이 달라질 수 있다. 정리 단계도 준비 당시의 제한 상태에 영향을 받는다. 같은 시험 실행에서 통신 허용 여부가 달라 보이면 픽스처의 준비와 정리 순서도 확인한다.

관련 문서

Pytest-randomly / Requests-mock / RESPX / Pytest-asyncio