반응형
15.1 단위 테스트 (unittest 모듈)
unittest
모듈은 파이썬 표준 라이브러리로, 단위 테스트를 작성하고 실행하는 데 사용됩니다.
기본 테스트 작성
import unittest
def add(a, b):
return a + b
class TestMath(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(0, 0), 0)
if __name__ == '__main__':
unittest.main()
테스트 실행
python -m unittest test_script.py
setup과 teardown 메소드
테스트 클래스에서 setUp()
과 tearDown()
메소드를 사용하여 각 테스트 전에 초기화 작업을 수행하고, 테스트 후에 정리 작업을 수행할 수 있습니다.
import unittest
class TestExample(unittest.TestCase):
def setUp(self):
self.value = 42
def tearDown(self):
self.value = 0
def test_value(self):
self.assertEqual(self.value, 42)
if __name__ == '__main__':
unittest.main()
15.2 디버깅 기법 (pdb 모듈, breakpoint 함수)
파이썬에서는 pdb
모듈과 breakpoint()
함수를 사용하여 디버깅을 수행할 수 있습니다.
pdb 모듈 사용:pdb.set_trace()
를 사용하여 디버거를 호출하고, 코드 실행을 단계별로 추적할 수 있습니다.
import pdb
def buggy_function():
x = 10
y = 0
pdb.set_trace()
result = x / y
return result
buggy_function()
breakpoint() 함수 사용 (Python 3.7+): breakpoint() 함수는 디버거를 호출하는 표준 방법으로, Python 3.7 이상에서 사용 가능합니다.
def buggy_function():
x = 10
y = 0
breakpoint()
result = x / y
return result
buggy_function()
pdb 주요 명령어
n
(next): 다음 줄로 이동c
(continue): 다음 중단점까지 실행s
(step): 함수 내부로 들어가기p
(print): 변수 값 출력
import pdb
def buggy_function():
x = 10
y = 0
pdb.set_trace()
result = x / y
return result
buggy_function()
위 코드를 실행한 후, pdb
프롬프트에서 n
, c
, s
, p x
, p y
등의 명령어를 사용할 수 있습니다.
15.3 로깅 (logging 모듈)
logging
모듈은 프로그램의 실행 중 발생하는 이벤트를 기록하는 데 사용됩니다.
기본 로깅 설정
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
파일에 로깅
import logging
logging.basicConfig(filename='app.log', filemode='w', level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")
로깅 포맷 지정
import logging
logging.basicConfig(
filename='app.log',
filemode='w',
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")
반응형
'Python 문법 > Python 기본 문법(3.10 기준)' 카테고리의 다른 글
[python3.10 기본] 17. 고급 데이터 구조 (0) | 2024.07.02 |
---|---|
[python3.10 기본] 16. 프로젝트 구성 및 배포 (0) | 2024.07.02 |
[python3.10 기본] 14. 형 힌팅과 타입 검사 (0) | 2024.07.02 |
[python3.10 기본] 13. 비동기 프로그래밍 (0) | 2024.07.02 |
[python3.10 기본] 12. 표준 라이브러리 및 외부 라이브러리 사용 (0) | 2024.07.01 |