[기업협업] 퀀텀AI -Day 15-

제갈창민·2022년 1월 10일
0

기업협업[퀀텀AI]

목록 보기
9/18

어딜 쳐다보는 거냐고, 솔직히 너 그래 너 생판 처음 만난 너

[ PSY, "New_Face" ]

D

Determined(결연한) 한 표정으로 월요일 아침 출근을 했는데, 평소에는 막히지 않던 길이 꽉꽉 막히더니 평소보다 30분이나 늦게 도착했다. 9시면 도착할걸 9시30분에 도착하다니.. 어쨌거나, 10시에 출근한 사수님들과 3주차 첫 스크럼을 진행했다.

R

Remind 할 내용으로는 저번주에 push했던 API 기능중 url부분에 에러가 있었고, 큰 문제는 아니어서 사수님이 수정 후 재 push 하셨다고 말씀하시면서 오늘 작업하기전에 다시 pull 받으라고 하셨다. 그리고 주말간에 완성한 API는 스크럼에 이어서 곧바로 확인하고 push 하기로 했다. 3주차의 주요 과제는 바로 'Test Code 작성' 이었다.

F

피로감이 절로 몰려드는 TestCode, 하지만 '테스트가 없는 코드는 실패한 코드이다'라는 말도 있듯이, 반드시 작성해야 하는 부분이기도 하다. 우선 DRF에서는 'UnitTest'를 어떻게 하는지 부터 알아 보았다. DRF 공식문서(Testing)
프로젝트때 맛보았던, 내가 알던 그 'UnitTest'가 아니었다. 종류도 'DB를 거치는 테스트', 'DB를 거치지 않는 테스트' 로 나뉘어 있었고, Django에서 썼던 'TestCase'보다 좀 더 확장된 클래스 모듈을 사용하고 있었다. 자료를 찾던 중 유용해 보이는 자료를 오늘의 TIL에 첨부해 놓으려 한다.

TIL

from django.contrib.auth.models import User
from django.contrib.auth 	import get_user_model
from django.urls import reverse

from rest_framework 		     import status
from rest_framework.test    	     import APITestCase
from rest_framework.authtoken.models import Token

from notice import serializers, models


class SchoolTestCase(APITestCase):
    
    def setUp(self):
        User = get_user_model()
        self.user = User.objects.create_user(username='testuser', password='password@123')
        self.token = Token.objects.get(user__username=self.user)
        self.client.credentials(HTTP_AUTHORIZATION='Token' + self.token.key)
        
        self.school = models.School.objects.create(school_name='서울대', address='서울시 관악구', description='서울대입구 역에서 3Km')
        
        
    def test_school_create(self):
        data = {
            'school_name' : '서울대',
            'address' : '서울시 강남구',
            'description' : '서울대입구 역에서 3Km'
        }
        response = self.client.post(reverse('institution/school'), data)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

실패 코드(403 에러)

위의 TestCode는 오류때문에 실행되지 않는 코드이다. DRF에서 제공하는 APITestCase라는 클래스가 있는데, 이 TestCase는 DB에 직접 도달하여 테스트를 수행한다. 또한 Django의 RequestFactory 라는 테스트 클래스의 확장버전이기도 한데, Factory를 써본적이 없어서 비교하지는 못했다. 검색해봐도 Django에 대한 설명보다 SpringFramework, Pytest 에서 사용한 설명이 더 많았다. 다시 한번 공식문서들과 친해져야 할 때다.

Test 를 조금이라도 더 쉽게 해주는 Third party packages

  • Factoryboy - 임시 데이터 생성용 라이브러리
  • Faker - 무작위 값을 생성해주는 라이브러리
    Factoryboy & Faker

도움이 될 만한 페이지

현암 코딩 - DRF 공식문서를 번역하여 한줄 한줄 잘 설명되어 있는데, 개인적으로 가장 꼼꼼한 자료인 것 같음.

sp41mer/drf-test-examples - 어느 외국인의 github 인데, DRF에서 제공하는 TestCode를 종류별로 예시와 함께 구현되어있다. 기본 코드 블록은 이곳에서 참조하는 것이 좋을 것 같다.

개발 동기의 벨로그 - Faker 라이브러리 사용법에 대해 찾아보다가 발견한 동기의 벨로그. 개발 실력이 뛰어난 친구이니 신뢰도는 높은 편.

왜 널 쳐다보는 거냐고, 궁금해서 설레서 낯설어서

[ 싸이, "New-Face" ]

profile
자기계발 중인 신입 개발자

0개의 댓글