SetUp, teardown, setupmodule, tearDownModule 사용해서 각각의 테스트 격리

매일 공부(ML)·2022년 10월 5일
1

파이썬 코딩의 기술

목록 보기
15/27

테스트 하네스

  • TestCase 하위 클래스 안에서 setUP과 tearDown 메서드를 오버라이드
    • setUP: 테스트 전에 호출
    • tearDown: 테스트 메서드를 실행한 후에 호출
#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메서드에서 테스트를 준비하고 정리하는 것은 지연시간 발생으로 인해서 비실용적이다.


  • 해결: unittest 모듈은 모듈 단위의 테스트 하네스 초기화를 지원한다.
#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()


Summary

  • 단위 테스트(함수, 클래스 등의 기본 단위를 격리시켜 검증하는 테스트)와 통합 테스트(모듈 간의 상호작용을 검증하는 테스트)를 모두 작성하는 것이 중요

  • setUp과 tearDown 메서드를 사용하면 테스트 사이를 격리할 수 있고 더 깨끗한 테스트 환경을 제공할 수 있다.

  • 통합 테스트의 경우 모듈 수준의 함수인 setUpMoule과 tearDownModule을 사용하면 테스트 모듈과 모듈 안에 포함된 모든 TestCase 클래스의 전체 생명 주기 동안 필요한 테스트 하네스 관리

profile
성장을 도울 아카이빙 블로그

0개의 댓글