Unit test (1)

wltjs10645·2020년 10월 8일
0

TIL

목록 보기
14/19
post-thumbnail

Unit Test

작성한 코드의 가장 작은 단위인 함수를 테스트하는 메소드이다.
지금까지는 작성한 엔드포인트에 대해서 Httpie 나 포스트맨으로 Integration test 를 진행했지만 엔드포인트가 늘어날수록 시간이 많이 든다는 단점이 있다. 게다가 데이터베이스 서버를 돌려야하고 메모리도 많이 사용하게 되므로 비용이 비싸다.

Test 종류

Google Test Automation Conference 에서 제안된 피라미드로, 각 10% , 20%, 70% 의 비율로 전체 테스트를 구현하는 것을 권장한다.


UI -> Integration -> Unit 순으로 효율, 비용 good!

  • UI testing / End-To-End Testing
    e.g) 크롬 브라우저를 열어서 검색 기능, 회원가입 기능 등을 화면 상에서 확인
  • Integration Testing
    e.g) Httpie or Postman 으로 Json response 확인
  • Unit Testing

실습해보기💡

  1. mycalc.py
    mycalc 파일에 함수를 작성한다
def add(a, b):
    return a+b

def substract(a, b):
    return a-b

2.** mycalc.py와 동일한 디렉토리에 test.py 생성**

  • unittest 모듈을 임포트-> MyCalcTest라는 클래스 생성 -> unittest 모듈의 TestCase를 상속

class 안에 mycalc의 함수들을 테스트하는 test_add 함수와 test_substract 함수를 작성

  • mycalc.add 함수에 10, 20을 입력해서 더한결과가 30이 리턴되고 c라는 변수에는 30이 할당
  • self.assertEqual 함수에서 c에 저장된 변수의 값이 30이 맞는지 확인하는 코드가 실행되고 따라서 작성한 함수가 맞게 동작하는 지 테스트하게 되는 것
  • unnittest 파이썬 공식문서 에서 더 자세한 내용 확인 가능! 위의 assertEqual은 첫번째 인자와 두번째 인자 값이 서로 같은 지 확인해주는 함수이다.
import unittest
import mycalc

class MyCalcTest(unittest.TestCase):
    def test_Add(self):
        c = mycalc.add(20,10)
        self.assertEqual(c, 30)

    def test_substract(self):
        c = mycalc.substract(20,10)
        self.assertEqual(c, 10)

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

test pyramid

profile
BACKEND DEVELOPER☁️

0개의 댓글