반응형

setUp과 tearDown은 Python unittest에서 각 테스트 전후에 준비와 정리를 자동으로 실행하는 메서드다.

여러 테스트가 같은 객체나 파일, 연결 상태를 필요로 할 때 setUp에서 준비하고 tearDown에서 정리하면 테스트 간 영향을 줄일 수 있다.

 

핵심 정리

setUp은 테스트 메서드가 실행되기 전에 매번 호출되고 tearDown은 테스트 메서드가 끝난 뒤 매번 호출된다. 이 구조를 쓰면 테스트마다 동일한 초기 상태를 만들고, 실패 여부와 관계없이 정리 로직을 한곳에 둘 수 있다.

  • setUp은 각 test_ 메서드 실행 전에 호출된다.
  • tearDown은 각 test_ 메서드 실행 뒤에 호출된다.
  • 공통 테스트 데이터를 setUp에 두면 테스트 중복을 줄일 수 있다.
  • 파일, 임시 디렉터리, 연결 같은 자원은 tearDown에서 정리하는 편이 좋다.
  • assertion은 준비된 상태에서 기대 결과를 확인하는 단계다.

setUp과 tearDown은 테스트 전체에서 한 번 실행되는 훅이 아니라 각 테스트마다 반복 실행되는 준비와 정리 단계로 이해해야 한다.

이어서 볼 글

 

setUp, tearDown

• test 마다 수행되는 초기화 및 정리 작업은 setUp(), tearDown()안에 넣으면 된다.

• 이 경우 매번 test_ 로 시작하는 함수가 불리기 전후로 setUp()과 tearDown()이 계속 불린다.

*


import unittest


class DestStringMethods(unittest.TestCase):

    def setUp(self):
        print 'setUp is called!!!'

    def tearDown(self):
        print 'tearDown is called!!!'

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()

 

• 제공되는 assertion. 그냥 assert 말고 다음거 써야한다.

 

반응형

+ Recent posts