이번시간에는 간단히 Django에서 테스팅 코드를 어떤식으로 짜는지 알아보겠습니다. 전에 Node.js에서 Jest로 테스트 코드를 목업한 것과 매우 비슷하게 짤 수 있었습니다.
/order/user_order/tests.py
from django.test import TestCase
from .models import Order, Shop
class ShopModelTest(TestCase):
def test_sample(self):
temp = True
self.assertIs(temp, True)
def test_sample2(self):
temp = True
self.assertIs(temp, True)
def test_sample3(self):
temp = True
self.assertIs(temp, True)
class OrderModelTest(TestCase):
def test_sample(self):
temp = True
self.assertIs(temp, True)
def test_sample2(self):
temp = True
self.assertIs(temp, True)
def test_sample3(self):
temp = True
self.assertIs(temp, True)
Django앱을 만들게 되면 tests.py가 이미 있을겁니다. 여기에다 TestCase를 상속하는 클래스를 만들고 그 안에 테스팅 함수를 작성하면 됩니다. 간단히 temp와 (True | False)를 비교해서 통과시키는 테스팅하는 것을 짰습니다.
여기서 모든 테스팅 함수가 통과되어야 Ok가 뜨고 만약 한개라도 통과되지 못하면 이유와 Failed가 뜨게 됩니다. 이를 실행시키면 어떤 모습일지 아래에서 봅시다.
다음과 같이 Ok가 뜹니다. 이제 일부러 오류를 발생시켜 보겠습니다.
/order/user_order/tests.py
from django.test import TestCase
from .models import Order, Shop
class ShopModelTest(TestCase):
def test_sample(self):
temp = True
self.assertIs(temp, True)
def test_sample2(self):
temp = False
self.assertIs(temp, True)
def test_sample3(self):
temp = True
self.assertIs(temp, True)
class OrderModelTest(TestCase):
def test_sample(self):
temp = True
self.assertIs(temp, True)
def test_sample2(self):
temp = True
self.assertIs(temp, True)
def test_sample3(self):
temp = True
self.assertIs(temp, True)
여기에 False ( temp )와 True는 같지 않다며 FAILED가 뜨는 것을 보실 수 있습니다.
여기서는 간단히 self.assertIs만 사용하였는데, 이외에도 테스팅을 도와주는 내장된 함수들이 매우 많습니다. 다음에는 이를 활용하여 buildspec.yml을 사용해서 CI CD파이프라인을 만들어 보도록 하겠습니다.