TDD - Pytest CLI 실행

정태경·2022년 2월 2일
1

TDD

목록 보기
3/10
post-thumbnail

Pytest 설치

$ pip install pytest

Pytest 기본 룰

pytesttest_로 시작하거나 _test.py로 끝나는 파일을 테스트 코드로 인식한다. 또한 테스트 함수가 test로 시작해야만 테스트로 코드로 인식한다.

예를 들면, test_code.py 안에 아래와 같이 메서드가 정의되어 있다고 가정해 보자. pytest로 테스트를 돌려보면 test로 시작하는 test_addition(), testaddition() 메서드만 실행된다.


def test_addition(): # 이녀석은 실행된다.
	pass
    
def testaddition():  # 이녀석도 실행된다.
	pass
    
def addition_test(): # 이녀석은 실행되지 않는다.
	pass

def additiontest():  # 이녀석도 실행되지 않는다.
	pass

실행 방법

모든 테스트 실행

$ pytest

위와 같이 option과 path를 입력하지 않으면 디렉터리 내에 test_*.py 또는 *_test.py를 검색하여 모두 실행한다.

특정 규칙을 적용하여 테스트 실행

예제를 보여주기 위해 프로젝트 폴더 안에 test_calc_1.pytest_calc_2.py를 생성했다.

와일드카드 활용

와일드카드(*)를 지정하면 test_calc로 시작하는 모든 파일 실행이 가능하다.

$ pytest test_calc*.py

아래 실행 결과를 보면 test_calc_1.pytest_calc_2.py가 실행된 것을 볼 수 있다.


모듈 지정

당연히 특정 모듈만 실행하는 것도 가능하다.

$ pytest test_calc_1.py

아래 실행 결과를 보면 test_calc_1.py만 실행된 것을 볼 수 있다.


디렉터리 지정

디렉터리를 지정하여 실행하는 것도 가능하다.

$ pytest ./

아래 실행 결과를 보면 현재 디렉터리 내에 있는 test_calc_1.pytest_calc_2.py가 실행된 것을 볼 수 있다.

옵션 지정하여 실행

Pytest 실행 시 몇 가지 옵션을 지정하여 실행할 수 있는데, 자주 쓰이는 옵션을 알아보자.

특정 키워드를 포함하고 있는 테스트 코드 실행하기 (-k)

특정 키워드(문자열)를 포함하고 있는 테스트 코드를 실행할 수 있다. 예를 들어, 테스트 코드의 함수명에 'division'을 포함하고 있는 녀석들만 실행하고 싶다면 아래와 같이 실행할 수 있다.

$ pytest -k {키워드}
$ pytest -k division

테스트 결과를 조금 더 상세하게 보기 (-v)

기본 실행 명령어는 실패한 테스트 건만 F로 출력하고 Pass된 테스트 건은.으로 표시된다. 반면 -v옵션을 주면 각 테스트 코드 실행 결과를 출력해 준다.

$ pytest -v test_calc_1.py

첫 번째(또는 N 번째) 실패 시 테스트 중지하기 (-x)

테스트 실패 후 테스트를 중지하려면 -x 옵션을 주면 된다.

$ pytest -x            # 첫 실패 시 테스트 중지
$ pytest --maxfail=5   # 5번째 실패 시 테스트 중지

그 외 다양한 옵션

위에 서술한 옵션 외에 매우 다양한 옵션들이 있는데, pytest공식 DOC 또는 아래 명령을 통해 확인할 수 있다. (참고 링크)

$ pytest -h

설정 파일 활용 (pytest.ini)

위와 같이 몇 개의 옵션만 적용해도 테스트 코드를 실행하기 위한 명령어가 점점 길어지게 된다. 이때 pytest.ini 파일에서 기본 실행 명령어 옵션을 설정해놓을 수 있다. (참고 링크)

# pytest.ini 예시
[pytest]
python_files = test_*.py check_*.py example_*.py
profile
現 두나무 업비트 QA 엔지니어, 前 마이리얼트립 TQA 엔지니어

0개의 댓글