Python 기본 테스트 프레임워크 unittest 라이브러리 알아보기
오늘은 Python에서 기본적으로 존재하는 테스트 프레임워크인 unittest 라이브러리를 알아보려 합니다.
unittest 설치
파이썬에 기본적으로 설치되어 있습니다.
예제
import unittest
unittest를 가져옵니다.
class TestMethods(unittest.TestCase):
def setUp(self):
print("set up!")
def tearDown(self):
print("Cleaning job")
테스트 케이스는 unittest.TestCase를 상속받아서 생성할 수 있습니다.
setUp은 테스트 메소드가 수행되기 전에 동작하며, tearDown은 테스트 메소드가 수행되고 난 뒤에 동작합니다.
def test_upper(self):
self.assertEqual('hello'.upper(), 'HELLO')
assertEqual로 두 인자가 서로 같은지 확인 할 수 있습니다.
def test_isupper(self):
self.assertTrue('HELLO'.isupper())
self.assertFalse('hello'.isupper())
assertTrue로 참인지, assertFalse로 거짓인지 확인할 수 있습니다.
def test_even(self):
for i in range(0, 6):
with self.subTest(i=i):
self.assertEqual(i % 2, 0)
만약 반복문이 테스트 메소드에 포함되어 있다면, subTest로 반복되는 테스트를 구별할 수 있습니다.
subTest로 인하여 오류가 생겼을 때에 분리되어 출력됩니다.
@unittest.skip("skipping")
def test_nothing(self):
self.assertTrue(True)
@unittest.skip으로 테스트를 넘길 수 있습니다.
if __name__ == '__main__':
unittest.main()
만약 테스트를 다 작성했다면 메인 함수에서 모든 테스트를 수행할 수 있습니다.
def suite():
suite = unittest.TestSuite()
suite.addTest(TestMethods('test_upper'))
suite.addTest(TestMethods('test_isupper'))
return suite
특정 테스트 메소드들을 묶어서 수행할 수 있습니다.
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
테스트 메소드를 묶어놓은 TestSuite를 수행할 수 있습니다.
def testSomething():
assert 0 is not None
if __name__ == '__main__':
testcase = unittest.FunctionTestCase(testSomething)
testcase.run()
만약 기존의 테스트 함수가 존재한다면 FunctionTestCase로 감싸서 테스트 케이스 객체를 사용할 수 있습니다.
Written on June 26, 2019