본문 바로가기

Programming/Django41

✅ TDD란 무엇인가? 테스트 주도 개발을 처음 접하는 분들을 위한 설명 💡 TDD란?TDD(Test-Driven Development)는 테스트 주도 개발이라고 불리며,“테스트 코드를 먼저 작성하고, 그 테스트를 통과하는 실제 코드를 나중에 작성하는 개발 방식”을 말합니다.전통적인 개발은 기능을 먼저 만들고 테스트는 마지막에 하거나, 아예 하지 않는 경우도 많죠.하지만 TDD는 완전히 그 반대입니다.🔁 TDD의 개발 흐름TDD는 보통 다음의 3단계를 반복하며 개발합니다:Red – 실패하는 테스트 작성: 아직 기능이 없으니 테스트는 당연히 실패함 (의도된 실패)Green – 테스트를 통과하는 최소한의 코드 작성: 기능을 만들어 테스트가 통과하게 함Refactor – 코드 리팩토링: 테스트가 보장해주니 마음 놓고 구조 개선 가능이 사이클을 Red → Green → Refac.. 2025. 8. 6.
🛠 Django Admin 설정 중 FieldError: username 오류 해결기 (TDD 기반 개발) ✨ 목차프로젝트 상황TDD 방식으로 Admin 페이지 테스트 작성발생한 오류 분석원인: 커스텀 User 모델과 Django 기본 Admin의 충돌해결 방법: UserAdmin 커스터마이징마무리하며1. 프로젝트 상황현재 Django 심화 강의를 들으며 TDD 방식으로 프로젝트를 구성하고 있습니다.관리자(Admin) 페이지를 세팅하는 단계에서 다음과 같은 테스트 코드를 작성했습니다.# core/tests/test_admin.pyclass AdminSiteTests(TestCase): def setUp(self): self.client = Client() self.admin_user = get_user_model().objects.create_superuser( .. 2025. 8. 6.
🗄️ Django & SQL에서의 CASCADE와 NOT NULL 이해하기 1. CASCADE란?CASCADE는 외래 키(Foreign Key) 제약 조건에서 부모 객체가 삭제될 때, 자식 객체를 어떻게 처리할지를 결정하는 옵션 중 하나입니다.특히 on_delete=models.CASCADE는 부모가 삭제되면 해당 부모를 참조하는 모든 자식도 함께 삭제하라는 의미입니다.📌 Django 예시from django.db import modelsclass Author(models.Model): name = models.CharField(max_length=100)class Book(models.Model): author = models.ForeignKey( Author, on_delete=models.CASCADE # 부모 Author 삭제 시 .. 2025. 8. 5.
🧪 Python Mock 완벽 가이드 — 테스트에서 가짜 객체를 쓰는 이유 1. Mock이란?Mock은 테스트에서 진짜 객체 대신 쓰는 가짜 객체입니다.주로 외부 의존성이 큰 코드(DB, 네트워크, 파일, 시간 지연 등)를 대체하여,테스트를 빠르고, 안정적으로, 상황에 맞게 실행할 수 있게 해줍니다.“Mock은 테스트의 세계에서 배우로 등장하는 대역 배우입니다.”2. 왜 Mock을 쓰나?빠른 테스트: DB 연결, API 호출, 대기 시간 없이 실행상황 통제: 예외 발생, 특정 응답 값 등 원하는 상황 재현 가능행동 검증: 어떤 함수가 몇 번, 어떤 인자로 호출됐는지 확인 가능3. Python에서 Mock 도구Python 표준 라이브러리 unittest.mock이 제공하는 주요 기능:Mock / MagicMock → 자유롭게 속성과 메서드를 정의할 수 있는 기본 가짜 객체patc.. 2025. 8. 5.
🧪 테스트 주도 개발(TDD) 완벽 가이드 📌 1. TDD란 무엇인가?TDD(Test-Driven Development, 테스트 주도 개발)는기능을 구현하기 전에 테스트를 먼저 작성하고,그 테스트를 통과하는 코드를 만든 뒤 리팩터링하는 개발 방식입니다.한마디로, 테스트가 개발을 이끄는 방식이라고 볼 수 있습니다. 🚀🔄 2. TDD 핵심 사이클 (Red → Green → Refactor)🔴 Red – 실패하는 테스트 작성기능을 구현하기 전에 실패할 수밖에 없는 테스트 작성→ 실행하여 테스트가 실패하는지 확인🟢 Green – 테스트를 통과하는 최소한의 코드 작성가장 단순하게 테스트를 통과시키는 코드 구현→ 우선은 “통과”가 목표♻ Refactor – 코드 개선중복 제거, 가독성 향상, 구조 개선→ 리팩터링 후에도 테스트는 모두 통과해야 함?.. 2025. 8. 4.
🐍 [Django 5.2 + S3 연동 에러 기록] STATICFILES_STORAGE가 무시되고 계속 로컬 staticfiles 디렉토리에만 저장될 때 (해결 완료!) ✨ 문제 요약Django 5.2.4에서 AWS S3를 정적 파일 저장소(STATICFILES_STORAGE)로 사용하려고 설정했는데, python manage.py collectstatic을 실행할 때마다 계속 이렇게 나왔다.0 static files copied to '/Users/mj/Documents/my_site/staticfiles', 134 unmodified.심지어 python manage.py shell에서 확인해도...from django.contrib.staticfiles.storage import staticfiles_storageprint(staticfiles_storage.__class__)# 출력: 👉 이건 Django가 여전히 기본 로컬 FileSystemStorage를 쓰고.. 2025. 8. 1.