assert는 「이 시점에 이 조건이 참이어야 한다」를 표현하는 파이썬 키워드입니다.
테스트 코드의 핵심이지만, 일반 코드에서의 활용은 의외로 미묘합니다.
기본 문법.
assert x > 0 — x가 0 이하면 AssertionError.
assert x > 0, "x must be positive" — 메시지 첨부.
pytest의 가장 중요한 도구.
테스트에서.
assert result == expected가 가장 흔한 패턴.
unittest의 self.assertEqual(...)보다 짧고 자연스러움.
pytest는 실패 시 자세한 비교 출력 자동 제공.
프로덕션 코드에서는 신중하게.
python -O 또는 PYTHONOPTIMIZE=1로 실행하면 모든 assert가 무시됨(최적화 옵션).
비즈니스 로직에 의존하는 assert는 위험 — if + raise를 쓰는 게 안전.
용도.
1) 「이 시점엔 절대 이런 일이 없다」 invariant 표현(개발자용).
2) 함수 시작 부분의 사전 조건 점검(개발 모드).
3) 디버깅 보조 — 테스트 실패 메시지 첨부.
사용자 입력 검증·보안 체크는 assert가 아닌 정식 if + raise.
한 줄 요약
assert는 「이 시점에 이 조건이 참이어야 한다」 단언.
테스트의 핵심이지만 -O 옵션으로 무시되므로 프로덕션 검증·보안에는 if+raise를.
개발용 invariant에 적합.
더 알아볼 것
- assert + raise 차이
- __debug__ 변수
- Python -O 최적화 모드