반응형

Python unittest는 표준 라이브러리만으로 테스트 클래스를 만들고 test_ 메서드를 실행할 수 있는 테스트 프레임워크다.

TestCase를 상속한 클래스 안에 test_로 시작하는 메서드를 만들면 테스트 러너가 해당 메서드를 찾아 실행한다.

 

핵심 정리

unittest를 볼 때는 테스트 클래스, 테스트 메서드 이름 규칙, assertion, setUp과 tearDown의 역할을 구분하면 된다. 작은 함수나 클래스 동작을 반복해서 확인할 때 표준 라이브러리만으로 테스트를 만들 수 있다는 점이 장점이다.

  • unittest.TestCase를 상속하면 테스트 케이스 클래스를 만들 수 있다.
  • test_로 시작하는 메서드는 테스트 실행 대상이 된다.
  • assertEqual, assertTrue 같은 assertion으로 기대값과 실제값을 비교한다.
  • setUp은 각 테스트 전에 실행되고 tearDown은 각 테스트 뒤에 실행된다.
  • pytest와 비교하면 unittest는 클래스와 메서드 구조가 더 명시적이다.

테스트 글을 볼 때는 실행 명령보다 어떤 상태를 준비하고 어떤 결과를 검증하는지 먼저 나누면 코드를 읽기 쉽다.

이어서 볼 글

 

unittest

??파이선에서 지원하는 테스트 프레임웍

??기본 메뉴얼은 여기

??이건 좀 더 캐주얼

??다음 예제를 보자


import unittest


class DestStringMethods(unittest.TestCase):

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

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        # 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()

 

??위의 예제 돌리면은 DestStringMethods라는 클래스가 unittst.TestCase를 상속받았기 때문에 그 안의 method중에서 test로 시작하는 메소드들은 테스트의 대상이 된다. (맨위에 dest_upper는 test로 시작하지 않아 빠짐)

반응형

+ Recent posts