페이지

2022년 8월 13일 토요일

10.1 파이썬 단위 테스트

 파이썬으로 테스트할 때는 표준 라이브러리에 포함된 unittest를 사용하면 편합니다. 여기에서는 이전 단계에서 구현한 square함수를 테스트해봅니다. 코드는 다음과 같습니다.


import unittest

class SquareTest(unittest.TestCase):
  def test_forward(self):
    x = Variable(np.array(2.0))
    y = square(x)
    expected = np.array(4.0)
    self.assertEqual(y.data, expected)


이와 같이 우선 unittest를 임포트하고 unittest.TestCase를 상속한 SquareTest클래스를 구현합니다. 여기서 기억할 규칙이 있습니다. 테스트할 때는 이름이 test로 시작하는 메서드를 만들고 그안에 테스트할 내용을 적습니다. 앞의 테스트는 square 함수의 출력 기댓값(expected)과 같은지 확인합니다. 정확하게는 입력이 2.0일때 출력이 4.0이 맞는지 확인합니다.


앞의 예에서 square함수의 출력이 기댓값과 같은지 확인하기 위해 self.assertEqual이라는 메서드를 사용했습니다. 이 메서드는 주어진 두 객체가 동일한지 여부를 판정합니다. 이 메서드 외에도 self.assertGreater와 self.assertTrue등 unittest에는 다양한 메서드가 준비되어 있습니다. 다른 메서드들의 사용법은 unittest문서를 참고하세요


이제 테스트를 실행해볼까요? 

python -m unittest steps/step10.py

python 명령을 실행할 때 앞의 예처럼 -m unittest 인수를 제공하면 파이썬 파일을 테스트 모드로 실행할 수 있습니다.

unittest.main()

테스트가 뭐라고 출력했는지 확인할 차례입니다. 실제로 앞의 명령을 실행하면 다음결과가 출력됩니다.


'1개의 테스트를 실행했고, 결과는 ok다'라는 뜻입니다. 즉, 테스트를 통과한 것입니다. 만약 무언가 문제가 있다면 'FAIL': test_forward(step10.SquareTest)'같은 문장이 출력되어 테스트가 실패했음을 알려줄 것입니다.

댓글 없음: