[Python] pytest를 이용한 테스트 코드 작성법

2026. 3. 11. 18:18·Python

(1) 문제 상황

코드를 짜다 보면 "이 함수 잘 작동하나?" 를 확인하기 위해 직접 print()를 찍어보거나 손으로 실행해보는 일이 반복됩니다.
이를 해결하고자 함수가 잘 동작하는지 확인 하기 위해 테스트 코드를 작성하는 방법을 알아보겠습니다.


(2) 파일 구조 규칙

pytest는 파일을 자동으로 탐색할 때 두 가지 규칙을 따릅니다.

  1. 테스트 파일명은 반드시 test_로 시작해야 합니다. pytest가 이 패턴으로 테스트 파일을 자동 인식합니다.
  2. 테스트 함수명도 마찬가지로 test_로 시작해야 pytest가 실행 대상으로 인식합니다.
  3. 테스트 파일은 별도의 tests/ 폴더에 모아두는 게 일반적인 관례입니다.
my_project/
├── src/
│   └── parser.py         # 실제 기능 코드
└── tests/
    └── test_parser.py    # 테스트 코드 (test_ 필수!)

parser_test.py 처럼 뒤에 붙이면 pytest가 인식하지 못합니다. 반드시 앞에 test_를 붙여야 합니다.


기능 코드 불러오기

테스트 파일에서 실제 기능 코드를 import해서 사용합니다.

# 기능 불러오기
from src.parser import parse_weather

테스트 코드 작성 패턴

테스트 코드는 보통 세 단계로 구성됩니다. 준비 → 실행 → 검증, 이 흐름을 기억해두면 어떤 함수든 테스트할 수 있습니다.

① 샘플 데이터 준비 (Arrange)

함수에 넘길 입력값을 직접 만듭니다. 실제 API를 호출하지 않고 가짜 데이터로 테스트하는 게 핵심입니다.

② 함수 실행 (Act)

테스트할 함수를 호출하고 결과를 변수에 저장합니다.

③ 결과 검증 (Assert)

assert 키워드로 결과가 기대한 값과 일치하는지 확인합니다. 조건이 False이면 테스트가 실패합니다.

def test_parse_weather():
    # ① 샘플 데이터 준비
    sample_data = {
        "response": {
            "body": {
                "items": {
                    "item": [
                        {
                            "wf": "맑음",
                            "ta": "11",
                            "rnSt": 10
                        }
                    ]
                }
            }
        }
    }

    # ② 함수 실행
    result = parse_weather(sample_data)

    # ③ 결과 검증
    assert isinstance(result, list)
    assert result[0]["wf"] == "맑음"
    assert result[0]["ta"] == "11"

실제 API 응답 구조를 그대로 샘플 데이터로 복사해서 쓰면 됩니다. 테스트는 외부 환경에 의존하지 않아야 빠르고 안정적으로 실행됩니다.


(2) 테스트 실행하기

터미널에서 아래 명령어로 테스트를 실행합니다. -v 플래그는 verbose의 약자로, 각 테스트 항목의 결과를 자세하게 출력합니다.

# 특정 파일만 테스트
pytest tests/test_parser.py -v

# tests 폴더 전체 테스트
pytest tests/ -v

성공 출력 예시

collected 1 item

tests/test_parser.py::test_parse_weather PASSED  [ 100%]

====== 1 passed in 0.12s ======

실패 출력 예시

tests/test_parser.py::test_parse_weather FAILED

AssertionError: assert result[0]["wf"] == "맑음"
  Left:  "흐림"
  Right: "맑음"


실패 시 pytest는 어떤 값이 기대와 달랐는지 정확히 알려줍니다. 이 출력만 봐도 어디를 고쳐야 할지 바로 알 수 있습니다.


(3) 마치며

pytest의 규칙은 단순합니다. test_로 시작하는 파일, test_로 시작하는 함수, 그리고 assert로 검증. 이 세 가지만 기억하면 됩니다.

처음에는 테스트 코드를 별도로 작성하는 게 번거롭게 느껴질 수 있습니다. 하지만 기능이 늘어날수록, 테스트가 있다는 사실 하나만으로 코드를 수정할 때의 불안감이 크게 줄어듭니다. 테스트는 결국 미래의 내가 과거의 나를 믿을 수 있게 해주는 장치입니다.


핵심 요약

항목 규칙

파일명 test_기능.py
함수명 test_함수명()
검증 assert 조건
실행 pytest tests/ -v

'Python' 카테고리의 다른 글

[Python] Selenium에서의 innerHTML, innerText, textContent 차이점  (0) 2026.03.18
[Python] 정규표현식  (0) 2026.03.13
[Python] json.dumps() 사용법, 사용이유  (1) 2026.03.10
[Python] API 요청 방법  (0) 2026.03.09
[Python] 라이브러리 관리하기  (0) 2026.03.07
'Python' 카테고리의 다른 글
  • [Python] Selenium에서의 innerHTML, innerText, textContent 차이점
  • [Python] 정규표현식
  • [Python] json.dumps() 사용법, 사용이유
  • [Python] API 요청 방법
byhy0
byhy0
byhy0 님의 블로그 입니다.
  • byhy0
    byhy0 님의 블로그
    byhy0
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • T아카데미 (4)
      • Project (2)
      • Airflow (4)
      • Python (16)
        • Django (0)
      • Java (1)
      • Spring (4)
        • Board Project (3)
      • SQL (3)
      • Docker (1)
      • 클라우드 (2)
      • Error (3)
      • Git (5)
      • 코딩테스트 (12)
        • SQL (5)
        • Python (7)
      • TIL (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    T아카데미 #2주차 회고 #데이터 엔지니어 2기
    push #pull #git연동
    오블완
    venv #파이썬 가상환경 #가상환경
    programmers #SQL #코딩테스트
    API 요청 #API
    git #github #repository 생성
    python #pytest #테스트
    T아카데미#SK플래닛#데이터엔지니어2기
    T아카데미 #면접 #데이터 엔지니어 #K-Digital Traning
    #클라우드 #클라우드컴퓨팅 #CloudComputing #온프레미스 #CS기초 #IT인프라 #서버
    게시판
    programmers # 코딩테스트 #sql
    BigQuery #SQL
    T아카데미 #SK플래닛 #회고 #1주차
    Git #설치법
    티스토리챌린지
    #Python #정규표현식 #Regex #웹크롤링 #데이터처리
    vscode #git #git연동법
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
byhy0
[Python] pytest를 이용한 테스트 코드 작성법
상단으로

티스토리툴바