Pytest의 유용한 플러그인을 정리한 포스팅 입니다.
1. pytest-xdist : 테스트 병렬 수행
2. pytest-html : 테스트 결과 HTML 리포트로 출력
3. pytest-testrail : 테스트 결과 TestRail로 전송
4. pytest-rerunfailures : 실패한 테스트 재수행 (현재 글)
자동화로 E2E 테스트를 진행하다 보면, 실제 Fail이 아님에도 간헐적으로 테스트 결과가 Fail이 나오는 경우가 있습니다. 그런 경우, pytest-rerunfailures 플러그인을 통해 실패한 테스트를 재수행할 최대 횟수를 설정하여 재수행할 수 있습니다.
$ pip install pytest-rerunfailures
아래 예시 코드는 테스트 결과가 랜덤으로 Fail되며, 테스트 실패 시 대기시간 2초, 최대 5회 재수행되도록 설정된 코드입니다.
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_example():
import random
assert random.choice([True, False])
테스트가 3번의 Fail이 발생되고, 4번째 수행 시 Pass 되어 1 Passed, 3 Rerun으로 테스트 결과를 확인할 수 있었습니다.