← 홈

🧪Pytest

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📝 테스트 기본

🔍 테스트 발견

test_*.py or *_test.py 테스트 파일 이름
def test_function(): 테스트 함수 이름
class TestClass: 테스트 클래스 이름
def test_method(self): 클래스 내 테스트 메서드

단언문

assert x == y 기본 단언문
assert x != y 같지 않음
assert x in collection 포함 여부
assert x is None None인지
assert x is not None None이 아닌지
assert isinstance(x, Type) 타입 확인
assert 0.1 + 0.2 == pytest.approx(0.3) 부동소수점 비교

💻 명령줄

▶️ 테스트 실행

pytest 모든 테스트 실행
pytest test_file.py 특정 파일 실행
pytest test_file.py::test_func 특정 테스트 실행
pytest test_file.py::TestClass 테스트 클래스 실행
pytest -k "keyword" 키워드로 실행
pytest -k "not slow" 키워드 제외
pytest -m marker 마커로 실행

📤 출력 & 상세도

pytest -v 상세 출력
pytest -vv 더 상세 출력
pytest -q 조용한 출력
pytest -s print 문 표시
pytest --tb=short 짧은 트레이스백
pytest --tb=long 긴 트레이스백
pytest --tb=no 트레이스백 없음
pytest -l 트레이스백에 로컬 변수 표시

⚙️ 실행 제어

pytest -x 첫 실패 시 중지
pytest --maxfail=3 N번 실패 후 중지
pytest --lf 마지막 실패 재실행
pytest --ff 실패 먼저, 나머지 후
pytest -n auto 병렬 (pytest-xdist)
pytest --durations=10 가장 느린 10개 표시

🔧 픽스처

📦 픽스처 기본

@pytest.fixture 픽스처 정의
def test_func(fixture_name): 픽스처 사용
@pytest.fixture(scope="function") 함수 스코프 (기본)
@pytest.fixture(scope="class") 클래스 스코프
@pytest.fixture(scope="module") 모듈 스코프
@pytest.fixture(scope="session") 세션 스코프

픽스처 기능

@pytest.fixture(autouse=True) 자동 사용 픽스처
yield value 설정/해제 픽스처
@pytest.fixture(params=[1, 2, 3]) 매개변수화된 픽스처
request.param 픽스처 매개변수 접근
conftest.py 공유 픽스처 파일
@pytest.fixture(name="custom_name") 커스텀 픽스처 이름

🔧 내장 픽스처

tmp_path 임시 디렉토리 (Path)
tmp_path_factory 임시 디렉토리 팩토리
capsys stdout/stderr 캡처
capfd 파일 디스크립터 캡처
monkeypatch 객체 수정
request 테스트 요청 정보

🏷️ 마커 & 매개변수화

📌 내장 마커

@pytest.mark.skip 테스트 건너뛰기
@pytest.mark.skip(reason="msg") 이유와 함께 건너뛰기
@pytest.mark.skipif(condition, reason="") 조건부 건너뛰기
@pytest.mark.xfail 예상 실패
@pytest.mark.xfail(raises=Exception) 예상 예외
@pytest.mark.usefixtures("fix1", "fix2") 픽스처 사용

🔖 커스텀 마커

@pytest.mark.slow 커스텀 마커
@pytest.mark.integration 통합 테스트 마커
pytest.ini: markers = slow: desc 마커 등록
pytest -m "slow" 마커된 테스트 실행
pytest -m "not slow" 마커된 테스트 제외

🔢 매개변수화

@pytest.mark.parametrize("arg", [1, 2, 3]) 단일 매개변수
@pytest.mark.parametrize("a,b", [(1,2), (3,4)]) 다중 매개변수
@pytest.mark.parametrize("a", [1, pytest.param(2, marks=pytest.mark.skip)]) 마커가 있는 매개변수
@pytest.mark.parametrize("a", [1, 2], ids=["one", "two"]) 커스텀 ID

⚠️ 예외 테스팅

🚨 예외 테스팅

with pytest.raises(ValueError): 예외 예상
with pytest.raises(ValueError, match="pattern"): 메시지 매칭
exc_info = pytest.raises(ValueError)\nexc_info.value 예외 접근
@pytest.mark.xfail(raises=ValueError) 발생 예상

경고

with pytest.warns(UserWarning): 경고 예상
with pytest.warns(UserWarning, match="msg"): 경고 매칭
pytest -W error::UserWarning 경고를 에러로 취급
@pytest.mark.filterwarnings("ignore::Warning") 경고 무시

🎭 모킹

🔧 Monkeypatch

monkeypatch.setattr(obj, "attr", value) 속성 설정
monkeypatch.setattr("module.func", mock_func) 함수 모킹
monkeypatch.delattr(obj, "attr") 속성 삭제
monkeypatch.setenv("VAR", "value") 환경 변수 설정
monkeypatch.delenv("VAR") 환경 변수 삭제
monkeypatch.chdir(path) 디렉토리 변경

🎪 unittest.mock

from unittest.mock import Mock, patch mock 가져오기
mock = Mock(return_value=42) mock 생성
mock.assert_called_once() 한 번 호출 확인
@patch("module.function") patch 데코레이터
with patch("module.function") as mock: patch 컨텍스트 매니저

💡 팁 & 모범 사례

유용한 팁

  • 테스트 이름 설명적으로: test_should_return_value_when_condition
  • setup/teardown 메서드 대신 픽스처 사용
  • 공유 픽스처는 conftest.py에
  • 테스트 중복 줄이기에 parametrize 사용
  • 개발 중 -x 플래그 사용
  • 실패한 테스트 빠르게 재실행에 --lf 사용
  • 커버리지 리포트에 pytest-cov 사용