00 개요
- 앞서 <섹션 1: REST API 실습>과 <섹션 2: ORM을 사용하여 데이터베이스에 연결>에서 우리는 API를 개발한 후 Swagger UI를 통해 실제 API를 호출해봄
- 현재 검증해야 하는 API는 소량 (5개)이지만, API 수가 많아지면 일일이 Swagger UI를 통해 잘 작동하는지 검증하는 것은 시간 비효율적
- API 수정 시 테스트 코드를 이용하면 시간 줄일 수 있음 → 테스트 코드에 의해 API를 대신 동작시키고 과정 및 결과 검증 가능
- 섹션 3: 테스트 코드 학습 및 ToDo 프로젝트에 테스트 코드 적용 실습
01 테스트 코드란
1. 정의
- 시스템의 품질과 신뢰성을 검증하기 위한 코드
- 안정적인 프로젝트를 운영하기 위해 반드시 필요한 기술
2. 장점
- '코드 변경 -> 기능 점검' 과정을 자동화 → 반복적인 과정을 줄여주어 생산성 향상
- 개발자가 시스템에 대한 안정성 확신 → 유연한 코드 변경 및 자유로운 refactoring 가능
- 반대로, 테스트 코드가 없는 프로젝트는 개발자가 어떤 기능을 수정할 때마다 직접 API를 호출 및 데이터 검증해야 하며 최악의 경우에는 이런 검증 과정 없이 코드를 배포하게 됨
- 그럴 경우 개발자는 본인이 만든 시스템을 신뢰할 수 없어 side effect가 두려워 코드 변경을 점점 망설이게 될 수 있음
- 그러므로 테스트 코드는 안정적인 프로젝트를 운영하기 위해 반드시 필요한 기술로서 웹 개발자가 되기 위해 반드시 알아야
3. 심화
- 다양한 테스트 종류와 방법론 존재 - 검증하는 목적에 따라 분류됨
- 테스트 종류: Unit Test, Integration Test, Regression Test 등
- 방법론 종류: TDD, BDD 등과 같은 구체적인 테스트 방법론도 존재
02 PyTest란
1. 정의
- 테스트 코드 작성을 위한 Python 라이브러리
- Python에서 웹 프로젝트의 테스트 코드를 작성할 때 주로 PyTest 이용
2. Unit Test와 비교
- Unit Test = Python 표준 테스트 프레임워크
- PyTest는 Unit Test에 비해 간결한 문법 지원
- Unit Test에는 다양한 assert 문이 존재해 상황에 맞는 적절한 assert문을 이용해야 하나 PyTest는 하나의 assert문을 통해 모든 것 표현 가능
- Unit Test는 class 형태의 테스트만 지원하나 PyTest는 함수 단위 테스트 지원하여 훨씬 가볍게 사용 가능
- PyTest는 fixture 기능 지원
- 테스트 데이터 관리 쉽게 가능
- fixture 활용하여 테스트를 위해 반복적으로 데이터를 세팅하는 부분을 재사용 가능 → 테스트 코드의 양 감소
03 결론
- 앞으로 섹션 3에서는 PyTest를 이용하여 프로젝트에 테스트 코드를 적용하는 실습 진행할 것
'Web 개발 > FAST API (인프런 강의 내용)' 카테고리의 다른 글
3 실습2 테스트 코드 - GET 전체조회 API (0) | 2024.08.01 |
---|---|
3 실습1 PyTest 세팅 (0) | 2024.07.22 |
2 실습11 ORM 적용 - DELETE API (0) | 2024.06.01 |
2 실습10 ORM 적용 - PATCH API (0) | 2024.06.01 |
2 실습9 ORM 적용 - POST API (0) | 2024.06.01 |