unittest 만나기

Python 테스트 입문

Alexander Levin

Data Scientist

OOP 복습

  • OOP - 객체와 클래스를 기반으로 한 프로그래밍 패러다임.
  • 클래스 - 메서드와 속성을 가질 수 있는 객체의 템플릿.
  • 메서드 - 클래스에 속하는 함수/절차.
  • 속성 - 클래스에 속하는 변수.
  • 객체 - 클래스의 인스턴스.
  • 파이썬 클래스 예시:
    class Rectangle:
      # Constructor of Rectangle
      def __init__(self, a, b):
          self.a = a
          self.b = b
      # Area method
      def get_area(self):
          return self.a * self.b
    # Usage example
    r = Rectangle(4, 5)
    print(r.get_area())
    
>> 20
Python 테스트 입문

OOP 상속

  • 클래스는 다른 클래스의 속성을 상속할 수 있습니다.
  • 새 클래스명 뒤 괄호에 부모 클래스를 적습니다.
    class RedRectangle(Rectangle):
      self.color = 'red'
    
Python 테스트 입문

unittest란 무엇인가

  • unittest - 파이썬 배포판에 포함된 내장 테스트 자동화 프레임워크.
  • unittest - 단위 테스트에만 국한되지 않음.
  • OOP 기반: 각 테스트 케이스는 클래스, 각 테스트는 메서드.
  • 테스트 케이스 - 개별 테스트 인스턴스.
  • 테스트 스위트 - 테스트 케이스 모음.
Python 테스트 입문

unittest vs. pytest

unittest

  • OOP 기반 - 테스트 클래스를 만들어야 함)
  • 내장 - Python 배포판에 포함됨
  • 더 많은 단언 메서드

pytest

  • 함수 기반 - test_로 시작하는 스크립트와 함수를 검색
  • 서드파티 패키지 (Python 배포판과 별도 설치)

  • 단언 메서드는 더 적음

Python 테스트 입문

unittest로 테스트 만들기

거듭제곱 연산자 테스트:

import unittest

# Declaring the TestCase class
class TestSquared(unittest.TestCase):
    # Defining the test
    def test_negative(self):
        self.assertEqual((-3) ** 2, 9)
Python 테스트 입문

단언 메서드

  • .assertEqual(), .assertNotEqual()
  • .assertTrue(), .assertFalse()
  • .assertIs(), .assertIsNone()
  • .assertIsInstance(), .assertIn()
  • .assertRaises()
  • 기타 다수
Python 테스트 입문

요약

  • unittest - OOP 기반의 파이썬 내장 테스트 자동화 프레임워크
  • 테스트 케이스 - unittest의 테스트 단위 인스턴스
  • 테스트 생성 절차:
    1. unittest.TestCase를 상속하는 클래스를 선언
    2. 테스트 함수를 정의
  • 단언 메서드 사용
Python 테스트 입문

연습해 봅시다!

Python 테스트 입문

Preparing Video For Download...