• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

Django Unit Test에서 Async Task 시 Default DB 사용 이슈

23.02.13 20:51 작성 23.02.14 09:07 수정 조회수 267

1

unittest 기반의 Unit Test시 Celery 혹은 ProcessPoolExecutor을 이용하면 해당 Context에서 DB 접근 시, Test DB를 참조 하는 것이 아니라 settings의 Default로 설정해놓은 Exist DB에 접근하는 이슈가 있더군요. 해당하는 경우 어떻게 해야 Test DB로 붙어서 작업할 수 있을까요?

with concurrent.futures.ProcessPoolExecutor() as executor:

답변 1

답변을 작성해보세요.

1

안녕하세요.

Unit test 내에서 Celery나 ProcessPoolExecutor를 수행하는 것은 가장 작은 단위를 테스트하는 유닛테스트 목적에는 맞지 않는 듯 보입니다.

Celery는 별도의 프로세스에서 Task가 수행이 되기에 그럴 듯 하구요.

ProcessPoolExecutor에서는 실행 context가 전달이 안 되나보군요. 아래 포스팅을 참고하여 ProcessPooolExecutor인자로 mp_context=mp.get_context("fork") 를 지정하니, 의도하신 대로 동작하는 듯 보입니다.
https://stackoverflow.com/a/70929561

화이팅입니다. :-)