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 메서드를 사용하는 습관을 기르는 게 좋겠다.
'CS > Python' 카테고리의 다른 글
[python] python에서 객체를 string으로 출력하는 방법 (0) | 2021.10.04 |
---|---|
[Python] String List 내용 문자열(string) 만드는 방법 - join 함수 (0) | 2021.10.01 |
[Python unittest] Python 으로 Unit test 만드는 방법 1 (0) | 2021.07.20 |
Python 개행문자 지우는 방법, strip 과 replace (0) | 2021.07.08 |
[Python] 파이썬 문자열 나누는 방법 - 슬라이싱 (0) | 2021.06.08 |