안녕하세요! 그레이 해커 월횽입니다. 오늘은 Python에서 코드를 테스트하고 디버깅하는 방법에 대해 알아보겠습니다. 테스트는 코드가 올바르게 동작하는지 확인하는 과정이며, 디버깅은 코드에서 발생한 오류나 문제를 찾아 해결하는 과정입니다. 두 가지는 모두 안정적인 소프트웨어 개발에 필수적인 단계입니다.
1. 테스트의 중요성
테스트는 코드가 예상대로 동작하는지를 확인하는 중요한 과정입니다. 특히, 코드가 복잡해질수록 작은 변경에도 문제가 발생할 수 있으므로, 테스트를 통해 이러한 문제를 사전에 발견할 수 있습니다.
테스트의 종류
· 단위 테스트 (Unit Test): 개별 함수나 모듈을 테스트
· 통합 테스트 (Integration Test): 여러 모듈이 통합된 시스템을 테스트
· 종단 간 테스트 (End-to-End Test): 사용자 관점에서 전체 시스템을 테스트
2. 단위 테스트 (Unit Test)
단위 테스트는 개별 함수나 메서드가 정상적으로 동작하는지를 테스트합니다. Python에서 unittest 모듈을 사용하면 단위 테스트를 쉽게 작성할 수 있습니다.
단위 테스트 예시
import unittest
# 테스트할 함수
def add(x, y):
return x + y
class TestMathFunctions(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
self.assertEqual(add(-1, 1), 0)
if __name__ == '__main__':
unittest.main()
출력
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
3. 테스트 프레임워크: unittest와 pytest
· unittest: Python 내장 모듈로, 단위 테스트를 지원합니다.
· pytest: 더 간결하고 강력한 테스트 프레임워크로, 확장성과 유연성을 제공합니다.
pytest로 테스트 작성
def add(x, y):
return x + y
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
pytest를 사용하여 테스트를 실행하려면 pytest 명령어로 테스트 파일을 실행하면 됩니다.
pytest test_file.py
4. 디버깅 (Debugging)
디버깅은 코드에서 발생하는 버그나 오류를 추적하고 해결하는 과정입니다. Python은 디버깅을 돕는 다양한 도구를 제공합니다.
주요 디버깅 기법
· print() 문: 가장 기본적인 방법으로, 변수를 출력하여 상태를 확인
· assert 문: 조건이 참이 아닐 경우 오류를 발생시켜 코드의 상태를 확인
· pdb (Python Debugger): Python의 내장 디버거로, 코드 실행을 중단하고 변수 상태를 실시간으로 확인할 수 있습니다.
pdb 사용법
import pdb
def divide(a, b):
pdb.set_trace() # 디버깅 중단점 설정
return a / b
divide(10, 2)
pdb가 실행되면 코드를 한 줄씩 실행하거나, 변수 값을 확인할 수 있습니다.
· n: 다음 줄로 이동
· c: 코드 실행 계속
· q: 디버깅 종료
5. 예외 처리와 디버깅
코드를 작성할 때 발생할 수 있는 예외 상황을 처리하는 것도 중요합니다. try, except 블록을 사용하여 예상치 못한 오류에 대비할 수 있습니다.
예외 처리 예시
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
return None
print(divide(10, 0)) # 0으로 나눌 수 없습니다. 출력
6. 로깅 (Logging)
로깅은 실행 중 발생한 정보를 기록하여 나중에 분석할 수 있게 도와줍니다. Python의 logging 모듈을 사용하면 다양한 로그 메시지를 남길 수 있습니다.
로깅 사용 예시
import logging
# 로그 설정
logging.basicConfig(level=logging.INFO)
def add(x, y):
logging.info(f"Adding {x} and {y}")
return x + y
add(2, 3)
출력
INFO:root:Adding 2 and 3
7. 테스트와 디버깅 정리
· 테스트는 코드의 올바른 동작을 보장하고, 유지 보수성을 높입니다.
· 단위 테스트는 작은 단위의 코드를 테스트하는 좋은 방법입니다.
· 디버깅은 코드 오류를 찾고 해결하는 필수적인 과정입니다.
· 로깅을 사용하여 코드 실행 중의 정보를 기록하고 분석할 수 있습니다.
다음 시간에는 Python에서 활용할 수 있는 다양한 데이터 분석 기법에 대해 알아보겠습니다!
- 이전 수업 목록
'프로그래밍 > Python' 카테고리의 다른 글
[Python 강의] 15강 - 웹 스크래핑 기법 (0) | 2024.10.18 |
---|---|
[Python 강의] 14강 - 다양한 데이터 분석 기법 (1) | 2024.10.17 |
[Python 강의] 12강 - 고급 기법 (2) | 2024.10.15 |
[Python 강의] 11강 - 고급 데이터 구조 (0) | 2024.10.14 |
[Python 강의] 10강 - 라이브러리(Library) (1) | 2024.10.11 |