잘못된 입력을 설명하고 테스트하기
예외 발생 위치를 추적하고 실패 입력에도 일관된 결과를 제공합니다.
진도 0%
레슨
- 숫자가 아닌 입력 처리
변환 오류와 업무 규칙 위반을 구분합니다.
- 호출 위치에서 오류 찾기
예외가 호출자를 거쳐 전파되는 순서를 설명합니다.
- 정상값과 경계값을 함께 검증
경계 입력으로 규칙의 누락을 찾습니다.
- 재현 가능한 오류 보고
기대 결과·실제 결과·재현 절차를 구분합니다.
잘못된 입력이 기존 기록을 손상하지 않도록 고칩니다.
앞 모듈 미션 solution 전체를 이어받아 기존 CLI·요약·경로 검사를 유지합니다. 같은 프로세스의 메모리 목록에 add_record로 한 건을 추가하는 API를 확장하고 모든 입력 검증 뒤에만 목록을 변경합니다. 파일 저장과 새 CLI는 이번 범위가 아닙니다.
요구사항
- parse_pages·parse_cost는 성공 값 또는 명시적인 실패 결과를 제공합니다.
- 빈 입력·숫자가 아닌 입력·음수 입력을 테스트합니다.
- docs/bugs.md에 호출 위치와 기대·실제 결과 및 수정 전후 근거를 남깁니다.
- parse_pages·parse_cost는 문자열을 받아 (정수, None) 또는 (None, EMPTY|NOT_INTEGER|NEGATIVE)를 반환합니다. 앞뒤 공백·선택적 부호·ASCII 정수 표기 계약을 유지합니다.
- add_record(records, raw_title, raw_pages, raw_cost, raw_completed)는 성공 시 한 건 추가 후 OK, 실패 시 ERR_TITLE·ERR_PAGES_<오류>·ERR_COST_<오류>·ERR_COMPLETED를 반환합니다. 실패 시 목록 전체를 보존합니다. 제목은 공백 제거 후 비어 있지 않고 완료 표시는 0 또는 1입니다.
완료 기준
- 잘못된 금액과 쪽수 입력 뒤 기록 수와 합계가 변하지 않습니다.
- 정상·경계·실패 사례 테스트가 모두 통과하고 예외 전체를 숨기는 처리가 없습니다.
- 기존 20개와 신규 6개 unittest가 모두 통과합니다. 빈 목록 실패·기존 목록 전체 보존·실패 뒤 정상 추가·출력 없는 파서·예상하지 않은 자료형 오류도 확인합니다.
python3 -m unittest discover -s tests -p "test_*.py"미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 예외 메시지를 근거로 실패 위치를 설명합니다.
- 금액 합계의 잘못된 입력 정책이 문서와 코드에서 일치합니다.