작성한 코드의 가장 작은 단위인 함수를 테스트 하는 메소드이며, 작성한 로직을 테스트하는 유닛테스트 코드를 작성하여 테스트
사전에 test를 통해 문제가 생기지 않게 방지하는 과정(배포 이후 문제가 자주 발생하면 안됨)
Manual Test : 테스트 실행속도 ↓, 인력소모 ↑, 불안정성 ↑, 비용 ↑
-. E2E(End-To-End test) 10%(비중) : UI test tools - cypress. 실행하기는 쉽지만 비용이 많이 들고 부정확하며 실행 시간이 오래걸림.
-. Integrating testing 20%(비중) : Local server start Client tools: postman, httpie. 그 다음으로 공수가 많이 들어감/
-. Unit testing 70%(비중) : 시스템 test가 이닌 코드를 직접 test한다는 느낌! 가장 쉬우며 가장 효과가 좋음.
→ 테스트 할 수 있는 가장 작은 단위를 테스트 하는 코드를 작성해서 테스트 하는 것을 말함
TestCase: unittest Framework의 테스트 조직의 기본 단위
Fixture: 테스트를 진행할 때 필요한 테스트용 데이터 혹은 설정 등을 이야기한다. 주로 테스트가 실행되기
Assertion: unittest에서 테스트하는 부분이 제대로 되었는지를 확인하는 부분
Python의 unittest 모듈을 사용하여 유닛 테스트를 개발할때 일반적으로 다음과 같은 절차를 따릅니다.
먼저 unittest 모듈을 import 합니다.
import unittest
unittest.TestCase
클래스를 상속하는 테스트 클래스를 만듭니다.
class MyCalcTest(unittest.TestCase):
테스트 클래스 안에 test_
로 시작하는 테스트 메서드를 생성합니다.
def test_add(self):
테스드 메서드에서는 일반적으로 테스트하고자 하는 함수나 메서드를 호출하고 그 결과값을 self.assert*()
메서드를 사용하여 확인합니다. (assertEqual, assertTrue, assertFalse, assertRaises, assertRegex 등 다양한 assert 메서들을 사용 가능)
def test_add(self):
c = myCalc.add(70, 10)
self.assertEqual(c, 80)
테스트 클래스가 완성되었으면, unittest.main()을 호출하여 테스트를 실행합니다.