표준적인 방법:unittest내장 모듈을 쓰는 것이다.
#utils.py
def to_str(data):
if isinstance(data, str):
return data
elif isinstance(data,bytes):
return data.decode('utf-8')
else:
raise TypeError("str이나 bytes를 전달해야 합니다.'
'찾은 값: %r' % data)
#utils_test.py
from unittest import TestCase, main
from utils import to_str
class UtilsTestCase(TestCase):
def test_to_str_bytes(self):
self.assertEqual('hello', to_str(b'hello'))
def test_to_str_str(self):
self.assertEqual('hello', to_str('hello')
def test_failing(self):
self.assertEqual('incorrect', to_str('hello'))
if __name__ == '__main__':
main()
테스트는 TestCase의 하위클래스로 구성이 되고 어떤 테스트 메서드가 아무런 Exception도 발생시키지 않고 실행이 끝나면 테스트가 성공한 것이고 일부분이 실패해도 최초로 문제가 생긴 시점에서 멈추지 않고 진행하므로 전반적인 그림을 그릴 수 있다.