단위 테스트. PyUnit 이라고 하는 unittest 모듈을 이용.
Rules
- 테스트를 수행할 클래스는 반드시 unittest.TestCase 상속.
- 클래스 안에 test로 시작하는 멤버 메소드를 구현.
- 메소드 안에 assert~로 시작하는 함수로 테스트 결과를 확인.
- 그 후 unittest.main() 호출시 테스트 수행.
import unittest
def sum(a,b):
return a+b
class Module1Test(unittest.TestCase): # unittest.TestCase 상속
def testSum1(self):
self.assertEqual(sum(1,2),3)
def testSum2(self):
self.assertEqual(sum(1,-1),0)
unittest.main()
자주 사용하는 assert~ 함수들
| 함수명 | 설명 | |
|---|---|---|
| assertEqual(first,second,[msg]) | first,second가 같은지 확인, 실패시 msg 출력 | |
| assertNotEqual(first,second,[msg]) | first,second가 다른지 확인, 실패시 msg 출력 | |
| assertTrue(expr,[msg]) | expr이 True인지 테스트 | |
| assertFalse(expr,[msg]) | expr이 False인지 테스트 |
클래스를 입력받는 unittest
- basicfuction.py
class BasicFunction(object): def __init__(self): self.state = 0 def increment_state(self): self.state += 1 def clear_state(self): self.state = 0 - test.py
import unittest
from basicfunction import BasicFunction
class TestBasicFunction(unittest.TestCase):
def setUp(self): # 테스트가 수행되기 전에 테스트 환경을 설정함
self.func = BasicFunction()
def tearDown(self): # 테스트 수행 후 테스트 환경을 정리하는 역할
pass
def test_1(self):
self.assertTrue(True)
def test_2(self):
self.assertTrue(True)
def test_3(self):
self.assertEqual(self.func.state, 0)
def test_4(self):
self.func.increment_state()
self.assertEqual(self.func.state, 1)
def test_5(self):
self.func.increment_state()
self.func.increment_state()
self.func.clear_state()
self.assertEqual(self.func.state, 0)
if __name__ == '__main__':
unittest.main()
python test.py -v 커맨드로 명령어 실행
Comments