unittest는 「파이썬 표준 테스트 프레임워크」입니다.
JUnit(자바)에서 영감을 받았으며, Python 2.1부터 표준 라이브러리에 포함되어 있습니다.
외부 의존성 없이 단위 테스트를 작성·실행할 수 있습니다.
기본 사용.
import unittest.
class TestMath(unittest.TestCase): def test_add(self): self.assertEqual(1+1, 2); def test_negative(self): self.assertLess(-1, 0).
「test_」로 시작하는 메서드가 자동으로 테스트로 인식됩니다.
주요 단언(assert) 메서드.
assertEqual(a, b) — 같은가.
assertTrue(x) — True인가.
assertIn(a, b) — a가 b 안에 있는가.
assertRaises(Error, func, args) — 예외 발생 검사.
assertAlmostEqual(a, b, places=2) — 부동소수점 비교.
setUp과 tearDown.
모든 테스트 전에 실행되는 setUp, 후에 실행되는 tearDown.
「테스트마다 같은 초기 상태가 필요할 때」 자동으로 처리해 줍니다.
데이터베이스 연결, 임시 파일 같은 자원 관리에 유용합니다.
실행 방법.
python -m unittest test_module.py — 파일 단위.
python -m unittest discover — 모든 test_*.py 자동 발견·실행.
unittest는 견고하지만 코드가 다소 장황해, 모던 파이썬에서는 「pytest」 — 더 간결하고 강력한 외부 라이브러리 — 가 사실상 표준이 됐습니다.
다만 unittest는 표준 라이브러리이므로 설치 없이 즉시 쓸 수 있는 큰 장점이 있습니다.
한 줄 요약
unittest는 표준 테스트 프레임워크로 TestCase 클래스 + test_ 메서드 + assert로 단위 테스트를 작성합니다.
외부 의존성 없이 동작하지만 모던 표준은 더 간결한 pytest입니다.
더 알아볼 것
- pytest — 더 간결한 모던 테스트
- mock — 가짜 객체 만들기
- unittest.skip·skipIf — 조건부 건너뛰기