파비의 매일매일 공부기록

파이썬으로 하는 데브옵스 - 8장 #1 본문

Study/Python

파이썬으로 하는 데브옵스 - 8장 #1

fabichoi 2022. 1. 1. 23:30

이번장은 pytest에 대한 내용이다. 검증은 모든 단계에서, 중요한 목표를 달성하기 위해 수행될 수 있다고 저자는 말한다.

pytest를 실무에서도 사용하는데, 어떻게 사용하는지 구체적으로는 잘 모르고 기존에 있던 소스를 참고해서 작업을 했었다 보니, 이번 기회에 새로운 지식을 얻게 되면 활용할 수 있을 것 같다.

pytest를 통한 강력한 테스트
- 완전한 기능을 갖춘 프레임워크로서 프로젝트의 문서 전체를 반복하지 않고서는 범위를 좁혀서 도움이 될 만한 소개를 하기 어려울 정도라고 저자는 극찬.
- unittest를 사용하는 파이썬의 내장 테스트 방식만을 고수하는 것은 번거로움.
- 좀 더 간단한 테스트 케이스 작성 방법을 이해하고 명령줄 툴, 리포팅 엔진, 플러그인 확장성 및 프레임워크 유틸리티를 활용하기를 권장.
- 테스트 검색이 되기 위한 규약 : 테스트 디렉터리의 이름은 tests로 지정해야 함. 테스트 파일은 접두사로 test_를 붙이거나 test.py로 끝나야 함. 테스트 함수는 접두사로 test_가 붙어야 함. 테스트 클래스는 접두사로 Test가 붙어야 함. 테스트 메서드 역시 접두사로 test_가 붙어야 함.
- unittest와 차이 : unittest는 클래스와 클래스 상속을 반드시 사용해야 함. 대부분의 assert 메서드를 이해하고 기억해야 하지만 pytest는 assert 함수 하나로 다 된다. 

pytest의 특징
- hook와 같은 다양한 확장 옵션 제공. 런타임의 각기 다른 시점에 프레임워크 내부와 소통할 수 있게 해 줌.

conftest.py
- 이 파일에서는 툴이 플러그인처럼 확장될 수 있음.
- 이 파일이 있으면 프레임워크가 이를 로드해 그 안에 있는 특정 명령을 실행. 모두 자동으로 진행.
- 일반적으로 fixture에 대한 hook, fixture 및 helper를 보유하기 위해 사용됨. 인수로 선언된 테스트 내에서 해당 fixture를 사용할 수 있음.
- 웬만하면 2개 이상의 테스트 모듈이 이 파일을 사용할 때 픽스처와 헬퍼를 추가하는 것이 바람직.
- 본 파일을 로드하는 유일한 조건은 tests 디렉터리 내에 정확히 일치하는 이름으로 존재하는 것.

assert
- 보이지 않는 곳에서 객체를 검사하고 오류를 좀 더 자세히 기술하는 풍부한 비교 엔진 제공

파라미터화 (parametrize 데코레이터 활용)
- 비슷한 입력으로부터 동일한 결과를 평가해야 할 때, 모든 값을 그룹화해 테스트에 전달할 수 있는 기능이 있어 편리함. (여러 개의 테스트 함수를 하나로 줄일 수 있음)
- 출력에는 반복된 각각의 단일 테스트에 사용된 값이 대괄호 안에 포함되어 있어서 확인이 용이함.

반응형
Comments