목록 보기
8퍼센트 Test case 작성 가이드
백엔드

8퍼센트 Test case 작성 가이드

8퍼센트
8퍼센트
2017년 5월 30일

두줄요약

Django 테스트 작성 시 네이밍, factory_boy, mock, freezegun 활용 방식을 안내합니다.\n공통 데이터 생성과 시간·signal 처리 시 성능 및 테스트 격리 원칙을 제시합니다.

해결 방법

  • TestCase 클래스명과 test_ 기반의 한글 함수명으로 테스트 의도 표현
  • fixture 대신 factory_boy 사용, 불필요한 signal은 mute_signals로 비활성화
  • 메서드 대체에 unittest.mock.patch, 시간 고정에 freezegun 활용

성능/운영 포인트

  • 읽기 전용 공통 데이터는 setUpTestData에서 한 번만 생성
  • 매 테스트마다 실행되는 setUp의 객체 생성 최소화
  • 필요한 객체만 테스트 함수 내부에서 생성하는 방식

주의할 점

  • naive datetime을 DateTimeField에 할당 전 timezone.make_aware()로 변환
  • start()로 시작한 mock과 freezer의 stop() 호출로 다른 테스트 영향 차단
  • signal 검증 목적이 아닐 때만 factory 생성 과정의 signal 비활성화

다음 읽기

#Python 주제를 이어서 읽기

Django timezone 문제 파헤치기

Django의 UTC 저장·조회 방식에서 naive datetime과 aware datetime이 섞이며 생기는 문제를 다뤘습니다. `timezone.now()`, `localtime()`, `make_aware()`를 통한 일관된 시간대 처리를 제안합니다.

8퍼센트
8퍼센트
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...