이 문서는 Python Unit testing framework에 대한 정보를 공유하기 위해 작성되었습니다. 


Unit testing framework

TESTaide는 Selenium 기반의 UI 테스트 자동화를 위해 Python unittest 유닛 테스팅 프레임워크를 사용하고 있습니다. 

Python의 unittest 프레임워크는 JUnit과 비슷하거 테스트 자동화, 테스트 설정, 종료 코드 공유, 테스트 컬렉션 집계, 리포팅 프레임워크 등의 기능을 제공합니다.

Python unittest는 다음과 같은 중요 개념을 지원합니다. 

  • test fixture
    하나 이상의 테스트를 수행하는데 필요한 준비 및 관련 정리 작업
  • test case
    개별 테스트 단위로 특정 입력 셋에 대한 특정 응답을 확인
  • test suite
    테스트 케이스 혹은 테스트 스위트의 모움
  • test runner
    테스트 실행을 조정하고 사용자에게 결과를 제공하는 구성 요소


기본 예제

다음은 Python unittest 예제를 보여줍니다. 

import unittest

# 테스트케이스는 unittest.TestCase를 서브클래싱하여 만들어집니다.
class TestStringMethods(unittest.TestCase):

	# 각 테스트케이스는 test로 시작해야 합니다. 
    def test_upper(self):
		# assertEqual은 두 값을 비교하여 동일하면 PASS, 다를 경우, FAIL됩니다. 
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
		# assertTrue, assertFalse는 부등호 안의 표현식이 True인지 혹은 False인지 테스트 합니다. 
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

# 모듈에서 테스트 집합을 로드하고 실행하는 명령입니다.
if __name__ == '__main__':
    unittest.main()
PY


Python 지원 asset method

테스트케이스의 실패를 확인하고 보고하는 다음과 같은 assert 메서드를 제공합니다. 

MethodChecks that

assertEqual(a, b)

a == b


assertNotEqual(a, b)

a != b


assertTrue(x)

bool(x) is True


assertFalse(x)

bool(x) is False


assertIs(a, b)

a is b

a와 b가 동일한 객체인지 검사

assertIsNot(a, b)

a is not b


assertIsNone(x)

x is None


assertIsNotNone(x)

x is not None


assertIn(a, b)

a in b


assertNotIn(a, b)

a not in b


assertIsInstance(a, b)

isinstance(a, b)


assertNotIsInstance(a, b)

not isinstance(a, b)