Chapter 2-5 테스트 스크립트 작성 가이드

2025. 5. 23. 10:34·Fastapi

🧪 테스트 스크립트 작성 가이드

🧰 pytest-asyncio 설치 및 설정

📦 설치 명령어:

poetry add --group=dev pytest-asyncio==0.25.0

📄 pyproject.toml 설정:

[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "session"
  • pytest는 기본적으로 async def로 작성된 테스트를 실행하지 않음
  • pytest-asyncio 플러그인을 사용하면 비동기 테스트도 지원 가능
  • 지금은 사용하지 않더라도 미리 설정해두는 것이 좋음
  • async/await는 추후 강의에서 별도로 다룰 예정

⚙️ test.sh 생성 (리눅스/맥 유저용)

📄 test.sh 파일 내용:

#!/bin/bash
set -eo pipefail

COLOR_GREEN=`tput setaf 2`
COLOR_NC=`tput sgr0`  # No Color

echo "Starting black"
poetry run black .
echo "OK"

echo "Starting ruff"
poetry run ruff check --select I --fix
poetry run ruff check --fix
echo "OK"

echo "Starting mypy"
poetry run mypy .
echo "OK"

echo "Starting pytest with coverage"
poetry run coverage run -m pytest
poetry run coverage report -m
poetry run coverage html

echo "${COLOR_GREEN}All tests passed successfully!${COLOR_NC}"

📌 기능 요약:

  • 코드 포매팅, 린트, 타입체크, 테스트, 커버리지 보고까지 한번에 실행
  • 에러 발생 시 즉시 중단 (set -eo pipefail)
  • 모든 툴이 정상 작동하면 초록색 메시지 출력

⚙️ Windows의 WSL에선 #!/bin/bash로 명시하지 않으면 dash가 실행되기 때문에 깨진다.

Windows에서 만든 파일은 줄 끝이 CRLF라서 Linux 셸이 오류를 낼 수 있어!

# 오류 여부 확인
file test.sh

# 에러메세지
test.sh: ASCII text, with CRLF line terminators

# 설치
which dos2unix
sudo apt update
sudo apt install dos2unix

# 줄바꿈 변환
dos2unix test.sh

# 권한 부여및 실행
chmod +x test.sh
./test.sh

 

⚙️ 실행

# 실행 권한부여
chomd +x ./test.sh

# 실행
./test.sh

⚙️ test.ps1 생성 (윈도우 PowerShell 유저용)

📄 test.ps1 파일 내용:

poetry run black .
if(!$?) { throw }

poetry run ruff check --select I --fix
if(!$?) { throw }

poetry run ruff check --fix
if(!$?) { throw }

poetry run mypy .
if(!$?) { throw }

poetry run coverage run -m pytest .
if(!$?) { throw }

poetry run coverage report -m
poetry run coverage html
if(!$?) { throw }

Write-Host "Done" -ForegroundColor Green

📌 주의사항:

  • PowerShell 전용 (cmd, WSL 등에서는 작동 방식이 다름)
  • if(!$?) { throw } 로 각 단계의 실패 여부 체크
  • 성공 시 초록색 텍스트 출력

📚 참고: https://stackoverflow.com/questions/47032005/why-does-a-powershell-script-not-end-when-there-is-a-non-zero-exit-code-using-th


✅ Recap

  • ✅ pytest-asyncio를 통해 비동기 테스트도 대응 가능
  • ✅ test.sh, test.ps1을 사용해 전체 테스트 자동화
  • ✅ CI/CD 통합 전에도 로컬에서 모든 검사를 일괄 수행 가능

"테스트는 자동화될 때 비로소 진짜 테스트다."

'Fastapi' 카테고리의 다른 글

Chapter 3-1 미팅 생성 API 스펙 만들기  (0) 2025.05.27
Chapter 2-6 Github Action 설정 및 캐싱 가이드  (0) 2025.05.23
Chapter 2-4 자동화 테스트가 필요한 이유  (0) 2025.05.23
Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)  (0) 2025.05.23
Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드  (0) 2025.05.23
'Fastapi' 카테고리의 다른 글
  • Chapter 3-1 미팅 생성 API 스펙 만들기
  • Chapter 2-6 Github Action 설정 및 캐싱 가이드
  • Chapter 2-4 자동화 테스트가 필요한 이유
  • Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (792)
      • Python (32)
      • 프로젝트 (112)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    urbantrends
    btsdischarge
    homebartrend
    americanlaw
    newpoliticalparty
    college reunions
    americaparty
    btsjungkook
    travel ban
    btscomeback
    bts
    trumpmuskclash
    lawsuitculture
    chinanightlife
    hotcoffeecase
    btsreunion
    RM
    global politics
    self-growth
    youngprofessionals
    remittance
    smartphonedurability
    gpterror
    basalcellcarcinoma
    titaniumcase
    livebroadcast
    classaction
    life reflection
    뷔
    chatgpterror
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 2-5 테스트 스크립트 작성 가이드
상단으로

티스토리툴바