$ pip install pytest
pytest
는 test_
로 시작하거나 _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.py
과 test_calc_2.py
를 생성했다.
와일드카드(*)를 지정하면 test_calc
로 시작하는 모든 파일 실행이 가능하다.
$ pytest test_calc*.py
아래 실행 결과를 보면 test_calc_1.py
과 test_calc_2.py
가 실행된 것을 볼 수 있다.
당연히 특정 모듈만 실행하는 것도 가능하다.
$ pytest test_calc_1.py
아래 실행 결과를 보면 test_calc_1.py
만 실행된 것을 볼 수 있다.
디렉터리를 지정하여 실행하는 것도 가능하다.
$ pytest ./
아래 실행 결과를 보면 현재 디렉터리 내에 있는 test_calc_1.py
과 test_calc_2.py
가 실행된 것을 볼 수 있다.
Pytest
실행 시 몇 가지 옵션을 지정하여 실행할 수 있는데, 자주 쓰이는 옵션을 알아보자.
특정 키워드(문자열)를 포함하고 있는 테스트 코드를 실행할 수 있다. 예를 들어, 테스트 코드의 함수명에 'division'을 포함하고 있는 녀석들만 실행하고 싶다면 아래와 같이 실행할 수 있다.
$ pytest -k {키워드}
$ pytest -k division
기본 실행 명령어는 실패한 테스트 건만 F로 출력하고 Pass된 테스트 건은.으로 표시된다. 반면 -v
옵션을 주면 각 테스트 코드 실행 결과를 출력해 준다.
$ pytest -v test_calc_1.py
테스트 실패 후 테스트를 중지하려면 -x
옵션을 주면 된다.
$ pytest -x # 첫 실패 시 테스트 중지
$ pytest --maxfail=5 # 5번째 실패 시 테스트 중지
위에 서술한 옵션 외에 매우 다양한 옵션들이 있는데, pytest
공식 DOC 또는 아래 명령을 통해 확인할 수 있다. (참고 링크)
$ pytest -h
위와 같이 몇 개의 옵션만 적용해도 테스트 코드를 실행하기 위한 명령어가 점점 길어지게 된다. 이때 pytest.ini
파일에서 기본 실행 명령어 옵션을 설정해놓을 수 있다. (참고 링크)
# pytest.ini 예시
[pytest]
python_files = test_*.py check_*.py example_*.py