테스트 DB로 쓸 때 SQLite는 거의 반칙이야
SQLite는 테스트 준비를 거의 공짜로 만들어줘. 잘 테스트된 codebase마다 빠지지 않고 나오는 전략이 셋 있어.
- 테스트마다 :memory: —
sqlite3.connect(':memory:')로 열고, migration을 돌리고, 테스트를 굴리면, 프로세스가 끝날 때 DB도 같이 사라져. 준비가 가장 빨라. - 테스트마다 tempfile — :memory:와 같은데 파일로 남아. 코드가 connection을 닫았다 다시 열어야 할 때 필요해.
- 템플릿 하나 만들어두고 복사 — fixture DB를 한 번 만들어두고 테스트마다 파일을 복사해 써. migration이 비쌀 때 빨라.
Self-reference: 피파 테스트는 pytest fixture로 :memory: 패턴을 써. store 계층 테스트마다 밀리초 안에 텅 빈 새 DB가 나와. 테스트가 100개 넘는 backend suite가 2초쯤에 끝나는 게 그래서야.