Files
web-page-backend/realestate-lab/tests/conftest.py

43 lines
1.3 KiB
Python

import os
import sys
import tempfile
import pytest
# 테스트 임시 DB 경로를 import 전에 주입
# mkstemp으로 충돌 없는 고유 경로 확보 후 SQLite가 직접 생성하도록 즉시 삭제
_fd, _TMP_DB = tempfile.mkstemp(suffix=".db")
os.close(_fd)
os.unlink(_TMP_DB)
os.environ["REALESTATE_DB_PATH"] = _TMP_DB
# app 패키지 import 가능하게 PYTHONPATH 보정
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 테이블 목록 — init_db가 생성하는 모든 테이블
_USER_TABLES = (
"listing_matches", # FK CASCADE 대비 자식 테이블 먼저
"listings",
"market_deals",
"listing_criteria",
"listing_collect_log",
"match_results", # FK CASCADE 대비 자식 테이블 먼저
"announcement_models",
"announcements",
"user_profile",
"collect_log",
)
@pytest.fixture(autouse=True)
def _clean_db():
"""각 테스트마다 DB 테이블 비우기. 파일 삭제 대신 TRUNCATE 패턴 사용해
Windows SQLite 파일 잠금 이슈를 회피한다."""
# deferred to ensure REALESTATE_DB_PATH is set before first module load
from app.db import _conn, init_db
init_db()
with _conn() as conn:
for table in _USER_TABLES:
conn.execute(f"DELETE FROM {table}")
yield