규도자 개발 블로그
파이썬의 유닛테스트를 한번에 파악할 수 있는 코드 본문
파이썬의 유닛테스트를 한번에 파악할 수 있는 코드
# unittest_example.py
import unittest
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
class DummyTest(unittest.TestCase):
def test_add(self):
c = add(10, 20)
self.assertEqual(c, 30)
def test_sub(self):
c = sub(20, 10)
self.assertEqual(c, 10)
def test_mul(self):
c = mul(10, 10)
self.assertEqual(c, 100)
def test_div(self):
c = div(10, 2)
self.assertEqual(c, 5.0)
# assert types
def test_assert_equal(self):
# a == b
a = 10
b = 10
self.assertEqual(a, b)
def test_assert_not_equal(self):
# a != b
a = 10
b = 9
self.assertNotEqual(a, b)
def test_assert_true(self):
# True only
self.assertTrue(True)
def test_assert_false(self):
# False only
self.assertFalse(False)
def test_assert_is(self):
# a is b
a = []
self.assertIs(a, a)
def test_assert_is_not(self):
# a is not b
a = [1]
b = [1]
self.assertIsNot(a, b)
def test_assert_is_none(self):
# a is None
a = None
self.assertIsNone(a)
def test_assert_is_not_none(self):
# a is not None
a = [1]
self.assertIsNotNone(a)
def test_assert_in(self):
# a in b
a = 1
b = [1, 2, 3]
self.assertIn(a, b)
def test_assert_not_in(self):
# a not in b
a = 4
b = [1, 2, 3]
self.assertNotIn(a, b)
def test_assert_is_instance(self):
# isinstance(a, b)
a = [1, 2, 3]
b = list
self.assertIsInstance(a, b)
def test_assert_not_is_instance(self):
# not isinstance(a, b)
a = [1, 2, 3]
b = tuple
self.assertNotIsInstance(a, b)
를 작성해보았다. 이번에 사내에서 새로 진행하는 프로젝트의 뼈대부터 만들게 되었는데 TDD를 적용하기 위해 백엔드에서 진행해볼 수 있는 unittest부터 api test, db test까지 접목하여 진행해볼 예정이다. 그 과정 중에 unittest class가 지원하는 assert함수의 종류를 한눈에 파악하고 필요한 걸 갖다 쓸 수 있게 예제를 제작해놓은 것이다.
사실 고민이 이것을 적용하는 데 있어서 코드를 쓰는 건 문제가 되지 않는데 아직 TDD를 통한 개발프로세스라는 게 머릿속에 명쾌하게 그려지는 게 없어서 이런 저런 사례들을 보고는 있는데 아직까지도 프로세는 명확하게 딱 이거다 할만큼 와닿는 게 없다. 그래서 일단은 기존의 상식대로 기능이 필요하면 Test에 함수를 작성해서 테스트하고 차차 그것을 적용한 enpoint를 제작하고 그 endpoint를 api test하는 시나리오를 짜는 식으로 진행해볼 예정이며 이 과정을 적용하는 데 있어서 부딪혔던 장애물들을 차차 기록하고 개선해나가는 방식으로 진행해야겟다.
'Python > Python' 카테고리의 다른 글
파이썬 인터닝 (Python Interning) - 객체 재사용 (1) | 2022.06.06 |
---|---|
파이썬 함수의 매개변수에 쓰이는 bare asterisk(*)의 의미 (0) | 2022.05.21 |
파이썬의 이스터에그 (0) | 2022.05.16 |
Python 프로세스 킬러 (Process killer) (0) | 2022.02.15 |
[Python] csv를 dict로 (1) | 2022.02.09 |
Comments