unittest
개요
현재 작업하는 프로젝트에서 python 테스트를 위해 unittest 를 적극 활용하고 있다.
이번에는 간단히 사용방법에 대해서만 정리하고, 작성하면서 겪는 문제점이나 고려해볼만한 사항들은 추후 지속적으로 정리할 예정이다.
자세한 사용 방법은 아래 URL을 참고해 봐도 좋을 것 같다.
https://docs.python.org/ko/3/library/unittest.html
unittest 시작하기
현재 구현하고 있는 Python 메서드들이 정상적으로 동작하는지, 특정 시나리오에서 만들어 진 input 에 따라 예상 된 output이 나오는지 테스트가 필요한 경우가 있다. 이럴 때, Python 에서 주로 사용되는 단위테스트 프레임워크인 unittest를 활용 해 볼 수 있는데, 나는 프로젝트 규모에 관계없이 unittest는 반드시 활용해 보는것을 추천하고 싶다.
아래는docs.python.org 에서 제공하는 unittest 의 기본 예시이며, 이 예시의 라인별로 설명을 적어보았다.
import unittest
class TestStringMethods(unittest.TestCase): // unittest.TestCase를 상속받는 클래스를 만든다.
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO') // 왼쪽 값과 오른쪽 같이 동일한지 테스트, 아니면 Fail
def test_isupper(self):
self.assertTrue('FOO'.isupper()) // 'FOO'.isupper() 가 True인지 확인
self.assertFalse('Foo'.isupper()) // 'Foo'.isupper() 가 False인지 확인
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world']) // s 를 split한 결과가 우측 값과 같은지 확인
if __name__ == '__main__':
unittest.main() // main을 호출하면 위 클래스에서 test_ 로 시작하는 unittest들을 모두 실행해 준다.
프로젝트를 시작하는 단계에서 내가 만들어 낸 기능을 테스트 해 보고싶다면, 자신의 모듈을 import해서 테스트 해 보면 될 것이다.
사실 실제 프로젝트에서 테스트를 원활히 하는 것은 생각만큼 단순하지 않을 수 있다. 테스트를 위한 추가 모듈들도 개발이 되어야 할 것이고, 원하는 테스트만 선택적으로 돌릴 수 있도록 하는 테스트 runner가 필요할 수도 있을 것이다.
이런 부분에 대해서는 다음에 추가로 정리를 해 볼까 한다.
'CS > Python' 카테고리의 다른 글
[Python] String List 내용 문자열(string) 만드는 방법 - join 함수 (0) | 2021.10.01 |
---|---|
[Python unittest] Python 으로 Unit test 만드는 방법 2 - assert 종류 (0) | 2021.07.26 |
Python 개행문자 지우는 방법, strip 과 replace (0) | 2021.07.08 |
[Python] 파이썬 문자열 나누는 방법 - 슬라이싱 (0) | 2021.06.08 |
[Python] 문자열 길이구하기, 문자열 잘라내기 (0) | 2021.06.08 |