Framework/Django

Django 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까?

JM Lee 2023. 9. 23. 16:38
728x90

💡 setUp() 함수

  • 각각의 테스트 메서드가 실행될 때마다 실행
  • 각 테스트메서드는 방금 생성된 fresh한 오브젝트를 입력받음
  • 각 테스트가 끝나면 롤백되기 때문에 데이터베이스에 대한 변경 사항을 정리하지 않아도 된다
  • 테스트 중 내용이 변경될 수 있는 객체를 이곳에서 생성한다
  • 단점 : 테스트당 한 번 호출됨 => 시간이 오래 걸리는 경우 테스트 속도가 크게 느려질 수 있다.

 

💡 setUpClass()

  • @classmethod 데코레이터를 달아 함께 사용, 메서드 인자로 cls를 넘겨준다
  • 모든 테스트 함수들을 아울러 데이터를 한 번만 설정한다
  • 한 곳에 테스트에 필요한 데이터들을 정의하고 관리할 수 있다는 장점이 있다
  • 단점 : 테스트 클래스가 시작되기 이전에 전체를 한 번 호출하기때문에 테스트 도중에 자동 롤백이 되지 않는다
  • 단점 : 작성한 내용을 되돌리기 위해서는 tearDownClass에서 직접 롤백해주어야 한다.