[Django]setUp() vs setUpTestData() 차이점

2021. 8. 16. 15:46·SW개발/Django

Django에서 unittest를 진행할 때 초기 데이터들을 설정하기 위해서는 다음과 같은 메소드가 사용될 수 있다.

  • setUp()
  • setUpTestData()

https://docs.djangoproject.com/en/3.1/topics/testing/tools/#testcase

 

Testing tools | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

겉으로 보기에 두 함수는 동일한 역할을 한다. 하지만 동작하는 원리와 방식에서는 약간의 차이가 있다.

먼저, 사용방법을 간단하게 소개한다.

# tests.py

from django.test import TestCase
from rest_framework.test import APIClient

class ExampleTest(TestCase):
    def setUp(self):
        # 테스트를 시작하기전 여러가지를 함
        print(f'-------{self._testMethodName}-------')
        self.client = APIClient()
    
    @classmethod
    def setUpTestData(cls):
    	# 테스트를 시작하기전 여러가지를 함
        leffe = Leffe.objects.create(title='leffe tistory')
        
    def test_leffe_title(self):
        # ~~ 다양한 테스트
        pass

setUp()의 경우 단순한 def로 선언하여 사용하면 되고, setUpTestData()의 경우 classmethod로 선언하여 사용하면 된다.

이 때, 둘의 차이점은 setUp()은 테스트 메소드마다 실행된다는 것이고, setUpTestData()는 클래스 내에서 초기에 딱 1번 실행되는 차이이다. 

 

따라서, 테스트를 진행하면서 매번 초기화 같은 것이 필요한 경우에는 setUp(), 그렇지 않고 1번의 초기화만 필요할 경우에는 setUpTestData()를 사용하면 된다. 매번 초기화를 진행하면 테스트 코드를 돌리는데 시간이 오래걸리므로 주의하여야 한다.

 

추후에 Django에서 테스트를 작성하는 법을 다뤄볼 것이다.

 

728x90

'SW개발 > Django' 카테고리의 다른 글

[Django]1.11에서 3.2로 버전 업그레이드 방법 (마이그레이션)  (0) 2021.11.23
[Django]silk로 프로파일링 하기  (0) 2021.08.20
[Django]get_object() 란?  (0) 2021.08.13
[Django]GenericForeignKey, ContentType로 여러 모델과의 관계 맺기  (0) 2021.08.06
[Django]Django REST Framework - Permissions  (0) 2021.07.21
'SW개발/Django' 카테고리의 다른 글
  • [Django]1.11에서 3.2로 버전 업그레이드 방법 (마이그레이션)
  • [Django]silk로 프로파일링 하기
  • [Django]get_object() 란?
  • [Django]GenericForeignKey, ContentType로 여러 모델과의 관계 맺기
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (309)
      • SW개발 (305)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (3)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    g
    트리 #AVL #알고리즘 #자료구조
    django
    어플리케이션
    컨트리뷰터
    음식
    배공파용
    Contributor
    플레이스토어
    오픈소스
    배달비 공유
    배달
    라이프 스타일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[Django]setUp() vs setUpTestData() 차이점
상단으로

티스토리툴바