pytest 명령어
앞의 두 줄은 직관적으로 해당 경로의 테스트를 수행하라는 것임을 알 수 있다. 한편 세 번째 줄은 내부적으로 string expression을 evaluate해서 해당 조건을 만족하는 테스트만 수행하라는 명령인데, 예를 들어 “MyClass and not method” 라고 지정할 경우 TestMyClass.test_something은 수행되지만 TestMyClass.test_method_simple은 수행되지 않는다.
또, 이렇게 특정한 테스트 함수만 수행하도록 지정할 수도 있다.
한편 이렇게 하면 pkg라는 package가 import 가능한 python 모듈일 경우 해당하는 경로를 찾은 다음 그 경로 내에 있는 모든 테스트를 수행한다.
첫 번째 -x의 경우에는 한 개의 테스트가 실패할 경우 바로 종료하도록 하는 옵션이고, 두 번째 –maxfail=2는 테스트가 두 개 실패할 경우 바로 종료하도록 하는 옵션이다.
이것 역시 중요한 명령어인데, 가장 수행시간이 길었던 열 개의 테스트를 출력하는 명령어이다.
이걸 안 하면 stdout이 capture 안된다? 작성해야됨
나머지는 익숙한 옵션이고, markers와 fixtures는 pytest 기본 fixture들을 보여준다. 예를 들어 tmpdir은 유일한 임시 공간의 경로를 나타내는 fixture다. 그리고 markers는 pytest를 import하면 기본적으로 사용 가능한 decorator들을 보여준다.
이 외에도 debugging이나 logging을 위한 여러 명령어-심지어 pastebin에 테스트 로그를 올려주는 기능도 있다-가 있지만 그건 다음에 다뤄보고, 지금은 매번 치기 귀찮은 명령어들을 기본값으로 지정하는 방법을 알아보자.
이건 현재 디렉토리 및 pytest.ini가 없는 하위 디렉토리에만 영향을 주는 pytest.ini 파일을 만드는 것이다.
한편 이렇게 환경 변수를 통해 유저 설정 전체를 바꿔버릴 수도 있다. 자세한건 pytest.ini을 참조.
그리고 까먹을 뻔 했는데, 물론 pytest를 명령줄이 아닌 python 코드로 실행하는 것 역시 가능하다.