예상 결과를 자동으로 검증하고 회귀를 막습니다.
테스트는 입력, 실행, 기대 결과 비교를 반복 가능한 코드로 만듭니다. unittest.TestCase의 assertEqual, assertRaises 등을 사용해 정상 경로와 경계·오류 경로를 함께 확인합니다.
GradeTest의 두 메서드는 이름이 test로 시작해 테스트로 수집되고, 80점이 PASS인지와 79점이 RETRY인지를 assertEqual로 확인합니다. 두 테스트가 합격선의 양쪽을 정확히 짚기 때문에 조건을 score > 80으로 잘못 바꾸면 첫 테스트가 바로 실패합니다. verbosity=2는 테스트마다 이름과 ok를 한 줄씩 보여 줍니다.
테스트 이름은 어떤 조건에서 어떤 결과를 기대하는지 드러내고 서로 상태를 공유하지 않게 준비합니다. 한 테스트 실패가 다른 테스트 결과를 바꾸면 원인 찾기가 어렵습니다.
CI에서 모든 변경마다 빠른 단위 테스트를 실행하고 외부 시스템이 필요한 통합 테스트는 환경과 데이터를 격리합니다.
구현 내부 호출 횟수만 검사하면 리팩터링 때 기능은 같은데 테스트가 깨질 수 있습니다. 공개 동작을 우선 검증하세요.
직접 바꿔보세요음수와 100을 넘는 점수에서 ValueError가 나는 테스트를 추가하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.