A ship in harbor is safe, but that is not what ships are built for.

개발일지/AI 캠프

내일배움캠프 AI - 83일차 TIL, 2022.12.27

플리피나리 2022. 12. 28. 02:48
반응형

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차

2022.12.27. 83일차 - TIL

 

 

1. 테스트 코드 작성하기

지금까지 API 테스트는 Postman을 통해 진행했는데 물론 Postman도 좋은 툴이지만 하나하나 send 버튼을 누르며 테스트를 해야하는 불편함이 있다.(실제로 매번 로그인 후 access 토큰 변경 후 헤더에 붙여서 보내고 이런 작업들이 상당히 번거로웠다.) 하지만 테스트 코드를 작성하면 한줄의 명령으로 모든 테스트 케이스를 한번에 처리할 수 있다는 장점이 있다. 개발에서 테스트의 종류는 크게 3가지로 분류한다.

 

1) Unit test : 독립적인 class와 function 단위의 테스트

2) Regression test : 발생했던 버그에 대한 수정 테스트 

3) Integration test : 유닛 테스크를 완료한 각각의 독립적인 컴포넌트들이 함께 결합하여 수행하는동작을 검증 -> 비즈니스 로직 검증

 

기본적으로 TestCase를 상속받아 만든 클래스는 2개의 method를 정의한다.

setUpTestData() : 클래스 전체에서 사용되는 설정을 위해 테스트 시작 때 딱 한 번만 실행 -> 테스트 method가 실행되면서 수정되거나 변경되지 않을 객체들을 이곳에서 생성

setUp() : 각각의 테스트 method가 실행될 때마다 실행 -> 테스트 중 내용이 변경될 수 있는 객체를 이곳에서 생성

from django.test import TestCase

class MyTestClass(TestCase):
	@classmethod
    def setUpTestData(cls):
    	print("setUpTestData: Run once to set up non-modified data for all class methods.")
        pass
    
    def setUp(self):
    	print("setUp: Run once for every test method to setup clean data.")
        pass

 

값을 체크하는 함수에는 아래의 것들이 있다.

self.assertEquals : 생각한 값과 같은지 체크하는 함수

self.assertTrue(A) : A값이 True인지 체크하는 함수 

self.assertFalse(A) : A값이 False인지 체크하는 함수

 

예를 들면 다음과 같은 테스트코드를 작성할 수 있다.

from django.test import TestCase

class MyTestClass(TestCase):

	@classmethod
    def setUpTestData(cls):
    	user = User.objects.create(username="london")
        
    def test_name_label(self):
    	first_user = User.objects.get(username="london").first_name
        self.assertEquals(first_user, 'kim')
        
    def test_age_bigger_19(self):
    	age = User.objects.get(username="london").age
        check_age = age > 19
        self.assertTrue(check_age)

 

+ 오늘의 트러블 슈팅

엔터로 input 입력값 넘기기

반응형