Programming/Python

[Python / pytest] pytest timeout, pytest 시간 제한하기

쿠마쿠마34 2023. 5. 11. 22:35
반응형

pytest로 test 스크립트들을 짜다 보면 time과 관련된 설정을 해야 될 경우들이 있습니다.

예를 들면, 무조건 몇초이내에 실행되야 성공으로 판단되는 test case나, 중간에 잘못된 로직으로 빠지면 test가 절대 종료되지 않아 특정 시간 후에는 끊어내야 하는 그런 케이스들이 있을 수 있습니다.

이런 경우에 일정 시간 내에 테스트가 종료되지 않으면 fail 처리를 할 수 있는 방법이 있습니다.

1. 모든 테스트에 일괄된 timeout 적용

우선 pytest-timeout 모듈을 설치합니다.

pip install pytest-timeout

그 후 pytest command를 실행시킬때 뒤에 timeout option을 추가하면 됩니다.

pytest --timeout=10

→ 위에 커맨드처럼 실행하면 모든 테스트에 일괄적으로 10초의 timeout이 적용되고, 테스트를 수행하는데 10초가 넘게 걸리면 fail 처리 됩니다.

2. 각 테스트별로 timeout 설정 개별 적용

@pytest mark를 이용해 테스트별로 각각의 설정을 적용할 수 있습니다.

아래 예시 코드처럼 적용하면 됩니다.

@pytest.mark.timeout(2) # 시간 제한 2초로 설정
def test_example():
	time.sleep(5) # 5초 대기

→ 위의 경우 2초안에 실행해야 했다고 설정했기 때문에 해당 테스트는 fail 되게 됩니다.

반응형