#environemt_test.py
from pathlib import Path
from tempfile import TemporaryDirectory
from unittest import TestCase, main
class EnvironmentTest(TestCase):
def setUp(self):
self.test_dir = TemporaryDirectory()
self.test_path = Path(self.test_dir.name)
def tearDown(self):
self.test_dir.cleanup()
def test_modify_file(self):
with open(self.test_path / 'data.bin', 'w') as f:
if __name__ == '__main__':
main()
모듈 사이의 end to end 상화작용 검증하는 테스트는 단위 테스트와 통합 테스트
이유: 모듈이 제대로 작동하는지 검증하기 위해선 모듈이 실제로 제대로 작동하는지 알 수 없다.
TestCase클래스의 setUP과 tearDwon메서드에서 테스트를 준비하고 정리하는 것은 지연시간 발생으로 인해서 비실용적이다.
#integration_test.py
from unittest import TestCase, main
def setUpModule():
print('* 모듈 설정')
def tearDownModule():
print('* 모듈 정리')
class IntegrationTest(TestCase):
def setUp(self):
print('* 테스트 설정')
def tearDown(self):
print('* 테스트 정리')
def test_end_to_end1(self):
print('* 테스트 1')
def test_end_to_end2(self):
print('* 테스트 2')
if __name__ == '__main__':
main()
단위 테스트(함수, 클래스 등의 기본 단위를 격리시켜 검증하는 테스트)와 통합 테스트(모듈 간의 상호작용을 검증하는 테스트)를 모두 작성하는 것이 중요
setUp과 tearDown 메서드를 사용하면 테스트 사이를 격리할 수 있고 더 깨끗한 테스트 환경을 제공할 수 있다.
통합 테스트의 경우 모듈 수준의 함수인 setUpMoule과 tearDownModule을 사용하면 테스트 모듈과 모듈 안에 포함된 모든 TestCase 클래스의 전체 생명 주기 동안 필요한 테스트 하네스 관리