Pytest 실행 명령어

sangyeon217·2021년 3월 13일
0

Pytest

목록 보기
2/10
post-thumbnail

Pytest의 실행 명령어 및 환경 설정 파일(pytest.ini)에 대해 정리한 포스팅 입니다.

실행 명령어

$ pytest

디렉토리 내 test_*.py 또는 *_test.py 파일을 모두 실행합니다.

만약 프로젝트 root 경로에서 특정 디렉토리 내부의 테스트 파일을 수행해야한다면, 아래와 같이 root 경로 기준 파일 위치를 입력하여 테스트 파일을 실행합니다.

$ python -m pytest {디렉터리명}/{테스트파일명}.py

이제 pytest로 테스트 파일을 실행하면서 주로 사용하는 여러 명령어 옵션들을 소개합니다.

명령어 옵션

k 옵션

테스트 파일의 특정 테스트 함수만 실행할 경우, -k 옵션을 사용합니다.
(참고로 테스트 함수명은 무조건 test_로 시작해야합니다. 그래야 테스트 함수로 인식합니다.)

$ pytest {테스트파일명}.py -k {테스트함수명}

v 옵션

기본 실행 명령어로는 Fail 건만 F로 출력하고, Pass 건은 .으로 표시하는 반면, -v 옵션 추가 시에는 각 테스트함수 실행 결과를 출력합니다.

vv 옵션

-v 옵션으로는 내용이 일부 생략될 수 있습니다.
-vv 옵션을 추가하면, -v 옵션보다 verbosity level을 높여 더 자세한 테스트 실행 결과를 출력합니다.
(얼마나 더 자세한지는 잘 모르겠네요..)

s 옵션

일반적으로 Failed 건에 대한 stdout, stderr 메세지는 캡쳐됩니다.
해당 메세지 캡쳐 기능을 비활성화 하고 싶을 때, -s 옵션을 사용합니다. --capture=no의 shortcut이라고 볼 수 있습니다.
만약 Passed 건에 대해서도 stdout, stderr 메세지를 캡쳐하고 싶다면, --capture=tee-sys 옵션을 사용하면 됩니다.
메세지 캡쳐에 대한 추가 정보는 공식 문서 에서 확인하실 수 있습니다.

r 옵션

short test summary info에 출력되는 테스트 결과에 대한 옵션 입니다.

테스트 결과 관련 옵션

  • N : none
  • f : failed
  • E : error
  • s : skipped
  • x : xfailed
  • X : xpassed
  • p : passed
  • P : passed with output
  • a : all except pP
  • A : all

-r 옵션 뒤에 붙이는 문자에 따라 short test summary info가 출력됩니다.
디폴트 옵션은 -rfE로, failed와 error 건이 출력됩니다.

ex)

  • -rA : 모든 테스트 결과 출력
  • -ra : passed 건 제외하고 모든 테스트 결과 출력
  • -fEs : failed, error, skipped 건 출력
  • -rN : 출력하지 않음

x 옵션

테스트 결과가 Fail이 하나라도 발생할 때 테스트 수행을 멈추고 싶은 경우, -x 옵션을 사용합니다.

maxfail 옵션

테스트 결과가 Fail N건 일 때 테스트 수행을 멈추고 싶은 경우, --maxfail=N 옵션을 사용합니다.

collect-only 옵션

테스트 실제 수행이 아닌 테스트 실행 시 수행되는 모듈, 기능 및 매개변수를 확인하고 싶은 경우, --collect-only 옵션을 사용합니다.
(캡쳐 추가 예정)

junit-xml 옵션

JUnit XML 형식의 테스트 결과 리포트를 출력하기 위해 --junit-xml={디렉터리명}/{xml리포트파일명}.xml 옵션을 사용합니다.
(이 옵션을 사용하여 pytest 실행 후 Jenkins 에서 빌드 후 조치로 'Publish JUnit test result report'에서 해당 xml 파일 맵핑 설정을 해두면, Jenkins 빌드 결과 'Test Result' 메뉴에서 테스트 결과를 확인할 수 있습니다.)

color 옵션

--color=yes 옵션을 사용하면 테스트 결과 출력 시, 색상을 입힐 수 있습니다. (이 옵션도 Jenkins Console Output에서 테스트 결과 확인 시, Passed/Failed 강조된 색상으로 확인할 수 있어 유용합니다.)

last-failed, failed-first 옵션

기존에 실행된 pytest 테스트 이력이 있다면(.pytest_cache 디렉터리 기반), 아래 명령어 옵션을 통해 이전 테스트에서 실패한 테스트를 재수행할 수 있습니다.

  • --lf, --last-failed : 이전 테스트에서 실패한 테스트만 재수행
  • --ff, --failed-first : 이전 테스트에서 실패한 테스트 먼저 수행한 이후 나머지 테스트 수행

https://docs.pytest.org/en/latest/how-to/cache.html

clear-cache 옵션

--clear-cache 옵션을 사용하면 모든 캐시 파일을 초기화하고 실행할 수 있습니다. 공식 문서에서는 속도보다 정확성이 우선시되어야하는 CI 서버에서 해당 옵션을 사용하길 권장하고 있습니다.

그 외 옵션들

그 외 옵션들은 여기서 확인하실 수 있습니다. (또는 $ pytest -h 명령어로 확인하실 수 있습니다)

설정 파일(pytest.ini)

옵션에 플러그인까지 사용하면 테스트 파일을 실행하기 위한 명령어가 점점 길어질 수 있는데, pytest.ini 파일에서 아래와 같이 테스트 파일로 인식할 파일 형태나 기본 실행할 명령어 옵션을 설정할 수 있습니다.

[pytest]
python_files = test_*.py *_tests.py check_*.py
addopts = -vv --maxfail=10

pytest.ini에서 할 수 있는 다른 설정 옵션이 궁금하시다면 여기를 참고해주세요.

profile
I'm a constant learner. "Long Learn for Long Run!"

0개의 댓글