Recent Posts
Tags
- 코딩테스트
- 파이썬
- PY4E
- 인공지능기초다지기
- SQL
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- boostcourse
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 네이버부스트캠프
- Oracle
- boostcoures
- python
- Django
- 이기적
- 오라클
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 빅데이터분석기사
- 데이터베이스
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 기초다지기
- unsub
- DB
- 프로그래머스
- Ai
- 부스트코스
- r
- 코딩테스트 python
- AI 플랫폼을 활용한 데이터 분석
- 정보처리기사
- 빅분기
- Today
- Total
매일공부
[Django] pytest "app_label" 에러 — 그리고 이게 배포엔 왜 상관없는지 본문
에러 상황
테스트를 돌렸는데 7개가 전부 이런 식으로 실패했다.
apps/quotations/tests/test_auto_cancel.py::TestNoCxlState::test_exits_with_error_when_cxll_missing
- RuntimeError: Model class apps.orders.models.OrderCode doesn't declare an explicit
app_label and isn't in an application in INSTALLED_APPS.
TestNoCxlState, TestNoTargets, TestPenOCancellation, TestResICancellation, TestDryRun 등 모델을 참조하는 테스트가 전부 같은 에러로 죽었다. 메시지만 보면 모델에 app_label을 안 붙여서 나는 에러처럼 보이지만, 실제 원인은 모델 코드가 아니라 경로 문제였다.
pytest가 프로젝트를 인식하는 기준 경로(rootdir)나 DJANGO_SETTINGS_MODULE이 실제 프로젝트 구조와 어긋나 있으면, Django가 앱을 제대로 로드하지 못해서 이런 식의 에러가 난다. 모델 자체는 멀쩡한데 "이 모델이 어느 앱 소속인지 모르겠다"고 하는 것.
pytest.ini를 .development로 설정해도 운영 배포에 영향 없는 이유
에러를 잡으면서 궁금해진 부분: pytest.ini에 개발용 settings(config.settings.development)를 지정해뒀는데, 이게 운영 서버에 실수로 반영되면 어떡하지?
결론부터 말하면 영향 없다.
- pytest.ini는 pytest 전용 설정 파일이다. Django 운영 서버(gunicorn 등)는 이 파일을 아예 읽지 않는다
- 운영 서버의 DJANGO_SETTINGS_MODULE은 docker-compose.yml 또는 .env의 OS 환경변수에서 별도로 설정되며, 이 값이 pytest.ini보다 우선한다
- 운영 작업 공간에 pytest.ini가 그대로 배포되더라도, pytest를 직접 실행하지 않는 한 아무 영향이 없다
즉, pytest.ini의 DJANGO_SETTINGS_MODULE은 테스트를 실행할 때만 쓰이는 값이다. pytest는 개발 서버에서 테스트할 때만 사용하는 도구라서, 배포 자체와는 완전히 분리된 관심사였던 것.
'IT > 작업기록' 카테고리의 다른 글
| [Bootstrap] mt-1, p-2... 여백 유틸리티 클래스 정리 (0) | 2026.05.08 |
|---|---|
| [인프라 공부] CI/CD, 혼자 개발해도 해야 하나? (0) | 2026.04.22 |
| [Python] mypy는 왜 쓰는가 — 동적 타이핑 언어에 왜 타입을 입히나 (0) | 2026.04.22 |
| [Django] Prefetch는 어떤 역할을 하는가 (0) | 2026.04.20 |
| Django + Docker 개발/운영 환경 분리 및 NAS 배포 정리 (0) | 2026.04.14 |
Comments