본문 바로가기
CS/Python

[Python unittest] Python 으로 Unit test 만드는 방법 2 - assert 종류

by Warehaus 2021. 7. 26.

Python unittest 는 값을 검사하고 실패를 확인하기 위해 몇가지 assert 메서드를 제공한다.


Version마다 assert 메서드 차이가 존재하는데, 이 부분은 사용 전 반드시 고려되어야 할 것이다.

 

메서드 검사내용 Version
assertEqual(a, b) a == b  
assertNotEqual(a, b) a != b  
assertTrue(x) bool(x) is True  
assertFalse(x) bool(x) is False  
assertIs(a, b) a is b 3.1
assertIsNot(a, b) a is not b 3.1
assertIsNone(x) x is None 3.1
assertIsNotNone(x) x is not None 3.1
assertIn(a, b) a in b 3.1
assertNotIn(a, b) a not in b 3.1
assertIsInstance(a,b) isinstance(a, b) 3.2
assertNotIsInstance(a, b) not instance(a, b) 3.2


테스트를 구성할 때 위 메서드 대부분을 섞어서 사용하게 되는데 다만 여기서 조금 신경써 주면 좋을 법 한부분이 있다면, 아래와 같이 테스트를 작성하지 않는 것이다.

 

def test_01 ( s ): 
    a = 3
    
    # Not bad but.. 
    s.assertTrue( a == 3 )
    
    # Good
    s.assertEqual( a, 3 )

 

a 값이 3이라는 것을 확인하고 싶은 테스트라면, 위의 코드 예시처럼 a == 3을 assertTrue로 확인할 수 있지만, 가능하면assertEqual( a, 3 ) 으로 정확하게 assert method를 활용해 주는 것이 좋다.


뭐 거창한 이유가 아닐 수 있지만 assert 함수의 가장 큰 장점은 원하는 값이 아닌경우 현재 값을 출력해 준다는 것인데, a == 3 이 참이냐 거짓이냐로 판단하는 경우 a 가 무슨 값인지 출력해 주지 않고 a == 3 이 참인지 거짓인지만 출력해준다.

 


그러니, 아래 코드처럼 assertEqual을 사용해서 a 와 3을 비교해 주면, Fail 발생 시 a 값을 출력해 줌으로써 어떤 이상한 값이 나왔는지 바로 확인할 수 있는 장점이 존재하므로, 가능하면 의도와 매칭되는 assert 메서드를 사용하는 습관을 기르는 게 좋겠다.