본문 바로가기
Django

Django test 수 많아졌을때 테스트 도중에 멈추는 경우

by Haeine 2023. 11. 1.

django 버전을 4.2.6으로 업데이트 하고부터 테스트가 진행중 갑작스럽게 중단되는 경우가 발생했다. 항상 그런것은 아니며 경험상 unittest 숫자가 대략 100개가 넘는 경우에 해당 문제가 발생했다.

테스트 수 654개, 테스트가 중간에 갑자기 멈춤

정확한 원인은 아직 파악못했다. "manage.py test" 명령어를 실행할 때 마다 그리고 테스팅하는 컴퓨터가 달라질 때 마다 테스트가 중단되는 시점이 다른점을 생각했을때 아마 컴퓨터 리소스 점유 때문에 이러한 문제가 발생되는게 아닐까 의심해본다.

원인 파악은 불 확실하지만 그래도 해결 방안은 발견했다. "manage.py test" 옵션 중에 --parallel 옵션이 있다. 테스트를 여러 쓰레드로 나누어 병렬로 진행하는 옵션이다. 각 unittest는 상호 의존성 없이 독립적으로 설계 되었기 때문에 해당 옵션을 사용하여 병렬로 test를 진행하면 테스트가 끝까지 성공적으로 진행된다.

--parallel auto 를 추가하여 모든 테스트 실행 완료함

아래 링크로가면 해당 옵션에 대한 설명이 있다.

https://docs.djangoproject.com/en/4.2/ref/django-admin/#cmdoption-test-parallel

옵션에 대해 간략히 설명하면 --parallel 옵션은 테스트를 진행하는 컴퓨터가 멀티코어 프로세스를 지원할 때 여러개의 코어를 이용하여 테스트를 병렬로 진행하는 옵션이다. 일꾼 한명이 벽돌 654개를 나르는 경우에서 여러명의 일꾼이 654개의 돌을 나누어 나르는 경우로 바뀌는것이다.

해당 옵션에는 정수 또는 auto 문자열을 값으로 넘겨줄수있다. 정수값은 테스트를 몇개의 병렬쓰레드로 진행할 것인지에대한 값이고 auto로 설정하면 보통 컴퓨터 cpu의 코어 수만큼 병렬 쓰레드를 만들어 하나의 코어가 하나의 쓰레드를 담당하는 방식으로 테스트가 진행된다. 위의 예시는 auto를 해당 옵션의 값으로 설정하여 테스트를 진행한 경우이다.

※ 해당 문제가 왜 발생 하는지 정확히 아시는 분은 댓글로 알려 주시면 감사하겠 습니다. 그리고 설명에 부족하거나 틀린부분 또한 댓글로 알려주시면 감사하겠습니다.

'Django' 카테고리의 다른 글

django 배포 시 runserver를 사용하지 않는 이유  (0) 2024.05.14