일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- create table
- port forwarding
- ftp
- Jupyter
- PYTHON
- kitura
- nohup
- rethinkdb
- perfect
- postgres
- ubuntu
- nGrinder
- STF
- appium
- GoCD
- Jupyter Notebook
- ssh
- appium server
- postgresql
- sshpass
- insert
- Materials
- nmap
- 실행권한
- centos
- STF_PortForwarding
- SWIFT
- mysql
- 28015
- openpyxl
- Today
- Total
don't stop believing
unittest assert 함수 살펴보기 본문
unittest에 있는 assert 함수들을 살펴보겠습니다.
확인을 위해 아래와 같이 준비합니다. 먼저 mymath.py 파일을 만들고 아래 내용을 저장합니다.
# -*- coding: utf-8 -*- # 변수 a와 b를 합합니다. # a, b 변수가 숫자(integer)일 경우 더하기가 됩니다. # a, b 변수가 문자(string)일 경우 두 문자가 합처진 하나의 문장이 됩니다. # a, b 변수가 서로 타입이 다를 경우 에러가 발생합니다. def add(a, b): return a + b # 변수 a와 b를 뺍니다. def subtract(a, b): return a - b # 변수 a와 b를 곱합니다. def multiply(a, b): return a * b # 변수 numerator(분자)와 denominator(분모)를 나눕니다. def divide(numerator, denominator): return float(numerator) / denominator # 변수 a와 b를 비교합니다. # 비교해서 같다면 True, 다르다면 False를 반환합니다. def compare(a, b): if a == b: return True else: return False # 변수 a에 b를 거듭제곱합니다. def involution(a, b): return a**b
이제 mymath.py와 같은 위치에 unittest-sample.py 파일을 만듭니다.
unittest-sample.py 파일에 아래와 같이 추가하고 저장합니다.
# -*- coding: utf-8 -*- import mymath import unittest class TestNGLE(unittest.TestCase): def test_add_integers(self): result = mymath.add(1, 2) # 결과 값이 3일 경우 Pass 입니다. # result == 3 self.assertEqual(result, 3) # 결과 값이 5이 아닐 경우 Pass 입니다. # result != 5 self.assertNotEqual(result, 5) def test_add_strings(self): result = mymath.add('My life suddenly took ', 'a turn for the better.') # 문자를 연결합니다. # 전체 문장에 'turn for'라는 글자가 있다면 Pass 입니다. # My life suddenly took a turn for the better. self.assertIn('turn for', result) # 전체 문장에 'tongchun'이라는 글자가 없다면 Pass 입니다. # My life suddenly took a turn for the better. self.assertNotIn('tongchun', result) def test_compare_integers(self): retult = mymath.compare(10, 10) # result의 값이 True라면 Pass 입니다. self.assertTrue(retult) def test_compare_strings(self): retult = mymath.compare('ngle', 'tongchun') # result의 값이 False라면 Pass 입니다. self.assertFalse(retult) def test_multiply(self): result = mymath.multiply(10, 2) # result의 값이 기대한 값(10)보다 크다면 Pass 입니다. # result > 10 self.assertGreater(result, 10) def test_subtract(self): result = mymath.subtract(5, 5) # result의 값이 기대한 값(-3)보타 크거나 같다면 Pass 입니다. # result >= -3 self.assertGreaterEqual(result, -3) def test_divide(self): result = mymath.divide(3, 9) # result의 값이 기대한 값(6)보다 작다면 Pass 입니다. # result < 6 self.assertLess(result, 6) def test_involution(self): result = mymath.involution(3, 3) # result의 값이 기대한 값(81)보다 작거나 같다면 Pass 입니다. # result <= 81 self.assertLessEqual(result, 81) if __name__ == '__main__': unittest.main()
그런다음 cmd에서 python으로 unittest-sample.py를 실행해 봅니다.
D:\Test-Unittest>python unittest-sample.py ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK
OK를 보셨다면 이제부터 assert 함수를 설명하겠습니다.
assertEqual()
assertEqual(결과 값, 기대한 값)
실제 데이터 값과 기대한 값이 동일한지 확인합니다.
결과 값과 기대한 값이 같다면 (결과 값 == 기대한 값) Pass 입니다.
# 결과 값이 3일 경우 Pass 입니다. # result == 3 self.assertEqual(result, 3)
assertNotEqual()
assertNotEqual(결과 값, 기대한 값)
실제 데이터 값과 기대한 값이 다른지 확인합니다.
결과 값과 기대한 값이 다르다면 (결과 값 != 기대한 값) Pass 입니다.
# 결과 값이 5이 아닐 경우 Pass 입니다. # result != 5 self.assertNotEqual(result, 5)
assertTrue()
assertTrue(결과 값)
결과 값이 True인지 확인합니다.
결과 값이 True라면 Pass 입니다.
# result의 값이 True라면 Pass 입니다. self.assertTrue(retult)
assertFalse()
assertFalse(결과 값)
결과 값이 False인지 확인합니다.
결과 값이 False라면 Pass 입니다.
# result의 값이 False라면 Pass 입니다. self.assertFalse(retult)
assertGreater()
assertGreater(결과 값, 기대한 값)
결과 값이 기대한 값보다 큰지 확인합니다.
결과 값이 기대한 값보다 크다면 (결과 값 > 기대한 값) Pass 입니다.
# result의 값이 기대한 값(10)보다 크다면 Pass 입니다. # result > 10 self.assertGreater(result, 10)
assertGreaterEqual()
assertGreaterEqual(결과 값, 기대한 값)
결과 값이 기대한 값보다 크거나 같은지 확인합니다.
결과 값이 기대한 값보다 크거나 같다면 (결과 값 >= 기대한 값) Pass 입니다.
# result의 값이 기대한 값(-3)보타 크거나 같다면 Pass 입니다. # result >= -3 self.assertGreaterEqual(result, -3)
assertLess()
assertLess(결과 값, 기대한 값)
결과 값이 기대한 값보다 작은지를 확인합니다.
결과 값이 기대한 값보다 작다면 (결과 값 < 기대한 값) Pass 입니다.
# result의 값이 기대한 값(6)보다 작다면 Pass 입니다. # result < 6 self.assertLess(result, 6)
assertLessEqual()
assertLessEqual(결과 값, 기대한 값)
결과 값이 기대한 값보다 작거나 같은지를 확인합니다.
결과 값이 기대한 갑보다 작거나 같다면 (결과 값 <= 기대한 값) Pass 입니다.
# result의 값이 기대한 값(81)보다 작거나 같다면 Pass 입니다. # result <= 81 self.assertLessEqual(result, 81)
assertIn()
assertIn(찾으려는 문장, 전체 문장)
전체 문장에서 내가 찾으려는 문장이 들어 포함되었는지 확인합니다.
전체 문장에서 내가 찾으려는 문장이 있다면 Pass 입니다.
# 전체 문장에 'turn for'라는 글자가 있다면 Pass 입니다. # My life suddenly took a turn for the better. self.assertIn('turn for', result)
assertNotIn()
assertNotIn(찾으려는 문장, 전체 문장)
전체 문장에서 내가 찾으려는 문장이 들어 포함되지 않았는지 확인합니다.
전체 문장에서 내가 찾으려는 문장이 없다면 Pass 입니다.
# 전체 문장에 'tongchun'이라는 글자가 없다면 Pass 입니다. # My life suddenly took a turn for the better. self.assertNotIn('tongchun', result)
실행 결과를 자세히 보고싶을 경우 -v 옵션을 주면 됩니다.
D:\Test-Unittest>python unittest-sample.py -v test_add_integers (__main__.TestNGLE) ... ok test_add_strings (__main__.TestNGLE) ... ok test_compare_integers (__main__.TestNGLE) ... ok test_compare_strings (__main__.TestNGLE) ... ok test_divide (__main__.TestNGLE) ... ok test_involution (__main__.TestNGLE) ... ok test_multiply (__main__.TestNGLE) ... ok test_subtract (__main__.TestNGLE) ... ok ---------------------------------------------------------------------- Ran 8 tests in 0.006s OK
여기까지 unittest에서 가장 많이 사용하는 8개 였습니다.
'Python > unittest' 카테고리의 다른 글
unittest 결과를 html report로 뽑아봅시다. (HtmlTestRunner) (0) | 2018.11.30 |
---|---|
Python Unittest 살펴보기 (0) | 2017.11.06 |