개발 도구

개발 도구 (Development Tools)

이 장에서 설명하는 모듈들은 소프트웨어 작성을 돕습니다. 예를 들어 pydoc 모듈은 모듈을 받아 그 내용에 기반한 문서를 생성하고, doctestunittest 모듈은 자동으로 코드를 실행하고 예상 출력이 생성되는지 검증하는 단위 테스트 작성을 위한 프레임워크를 포함합니다.

출처: Python documentation

본문

이 장에 문서화된 모듈들은 다음과 같습니다.

  • typing — 타입 힌트 지원. Python 타입 시스템 사양, 타입 별칭, NewType, 호출 가능 객체 애너테이션, 제네릭, 튜플 애너테이션, 클래스 객체 타입, 제너레이터·코루틴 애너테이션, 사용자 정의 제네릭 타입, Any 타입, 명목 vs 구조적 서브타이핑, 모듈 내용, 특수 타이핑 프리미티브, 프로토콜, 함수와 데코레이터, 인트로스펙션 헬퍼, 폐지된 별칭 등을 다룹니다.
  • pydoc — 문서 생성기이자 온라인 도움말 시스템.
  • Python Development Mode — 개발 모드의 효과, ResourceWarning 예제, 잘못된 파일 디스크립터 오류 예제.
  • doctest — 대화형 Python 예제 테스트. docstring의 예제 확인, 텍스트 파일의 예제 확인, 명령줄 사용법, 동작 방식, 옵션 플래그, 지시어, 기본 API, unittest API, 고급 API를 다룹니다.
  • unittest — 단위 테스트 프레임워크. 기본 예제, 명령줄 인터페이스, 테스트 발견, 테스트 코드 구성, 테스트 건너뛰기와 예상 실패, 서브테스트, 클래스와 함수, 픽스처, 신호 처리.
  • unittest.mock — mock 객체 라이브러리. Quick Guide, Mock 클래스, patchers(patch, patch.object, patch.dict, patch.multiple 등).
  • test — Python용 회귀 테스트 패키지. test.support 등 다양한 유틸리티 모듈.

이 모듈들은 Python 개발 워크플로우에서 문서 생성, 테스트 작성, 타입 검사, 코드 품질 관리에 중요한 역할을 합니다.

unittest는 Python 표준 단위 테스트 프레임워크로, 테스트 케이스를 클래스로 조직하고 assertEqual 같은 assertion 메서드로 예상 출력을 검증합니다. unittest.mock는 실제 객체를 흉내내는 mock 객체를 만들어 외부 의존성이 있는 코드를 격리해 테스트할 수 있게 합니다. doctest는 docstring 안에 적힌 대화형 예제를 실제로 실행하고 그 출력이 일치하는지 검증합니다.

typing은 타입 힌트를 지원하여 정적 타입 검사기와 IDE가 코드를 더 잘 이해하고 오류를 조기에 발견하게 돕습니다. PEP 484 이후 발전한 파이썬의 타입 시스템을 구현합니다. pydoc는 모듈·클래스·함수의 문서를 HTML이나 텍스트로 생성하며, pydoc을 명령줄에서 실행하면 온라인 도움말을 볼 수 있습니다.

개발 모드(Development Mode)는 명령줄의 -X devPYTHONDEVMODE 환경 변수로 활성화되며, ResourceWarning, 잘못된 파일 디스크립터 등 개발 중 발견하기 어려운 문제를 조기에 경고합니다. test 패키지는 CPython 자체의 회귀 테스트를 실행하는 데 사용됩니다.

unittestunittest.TestCase를 상속한 클래스에서 test_로 시작하는 메서드를 테스트로 인식하고, setUp()/tearDown()으로 테스트 전후 픽스처를 관리합니다. python -m unittest discover로 테스트를 자동 발견·실행할 수 있으며, assertRaises로 예외 발생을 검증하고 서브테스트(subTest)로 반복 케이스를 구분합니다.

doctest는 문서 안의 예제가 실제 동작과 일치하는지 검증해 문서가 최신 상태로 유지되게 합니다. unittest.mockMagicMockpatch()는 외부 API 호출, 네트워크 요청, 시간 의존 로직 등을 대체해 테스트를 결정적으로(확정적으로) 만듭니다.

typing은 정적 타입 검사기를 위한 타입 애너테이션을 제공하며, TypedDict, Literal, Protocol, 제네릭, TypeVar 등 복잡한 타입 표현을 지원합니다. pydocpython -m pydoc -p <포트>로 로컬 문서 서버를 띄울 수도 있습니다.

이 개발 도구 모듈들은 문서화, 테스트, 타입 검사, 코드 품질 관리를 아우르는 Python 개발 워크플로우의 핵심 구성 요소입니다.

더 알아보기 (Learn more)