Pytest의 유용한 플러그인을 정리한 포스팅 입니다.
1. pytest-xdist : 테스트 병렬 수행 (현재 글)
2. pytest-html : 테스트 결과 HTML 리포트로 출력
3. pytest-testrail : 테스트 결과 TestRail로 전송
4. pytest-rerunfailures : 실패한 테스트 재수행
$ pip install pytest-xdist
-n auto
로 수행 시, CPU 코어 개수에 따라 프로세스 개수를 자동으로 설정하여 테스트를 병렬 수행합니다.
$ pytest -n auto {테스트파일명}.py
입력한 프로세스 개수로 테스트를 병렬 수행합니다.
$ pytest -n {프로세스개수} {테스트파일명}.py
-n
옵션은 순서 보장 없이 무작위로 실행합니다. 순서대로 실행하려면 아래 옵션을 추가해야합니다.
--dist=loadscope
: 복수의 클래스를 병렬로 함수 순서대로 수행합니다.
--dist=loadfile
: 복수의 테스트 파일을 병렬로 함수 순서대로 수행합니다.
pytest-xdist는 각각의 worker가 고유의 환경을 가지고 있기 때문에 pytest.fixture에 설정된 scope과 관계없이 병렬로 수행됩니다. 그러므로, session scope의 fixture 함수를 선언하여도, session 단위로 1회 실행되는 것이 아니라 worker 개수만큼 실행됩니다.
https://medium.com/@kozyreva.hanna/pytest-xdist-with-session-scoped-fixture-b9884bd7bb29