0413 TIL

looggi·2023년 4월 13일
1

TILs

목록 보기
61/114

자료구조

정렬

https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html

구현이 간단하지만 비효율적인 방법 O(n^2)

삽입 정렬, 선택 정렬, 버블 정렬

  • 삽입 정렬
    원소를 그 앞에 있는 정렬된 원소듥과 비교 후 해당 값을 삽입할 위치를 찾아 삽입하며 정렬

  • 선택 정렬
    워소를 그 이후의 값들 중 최솟값과 비교하여 가장 작은 값을 앞에 놓는 과정을 반복해서 정렬

  • 버블 정렬
    인접한 두 원소를 비교하여 정렬

복잡하지만 효율적인 방법 O(logn^2)

퀵 정렬, 합병 정렬, 힙 정렬, 기수 정렬

  • 큌 정렬
    피벗을 기준으로 비균등한 두개의 리스트로 나눠서 정렬 후 전체를 정렬
    피벗을 기준으로 왼쪽은 작은 값들 오른쪽은 큰 값들

  • 합병 정렬
    균등한 두개의 리스트로 나눠서 정렬 후 전체를 정렬

    ➡️ 퀵, 합병정렬은 분할된 부분 리스트들에 대해서는 순환호출을 이용해서 정렬을 반복한다

  • 힙 정렬
    최소힙이나 최대힙을 사용해서 정렬하는 방법

https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html

testcode 작성해보기

회원가입

from rest_framework.test import APITestCase
from django.urls import reverse


class UserTest(APITestCase):
    def test_signup(self):
        url=reverse('signup_view')
        user_data={
            'username':'test',
            'email':'test@test.com',
            'password':'1234',
            'password_check':'1234'
        }
        response=self.client.post(url,user_data) 
        # print(response) # <Response status_code=201, "application/json">
        # print(response.data) # {'message': '회원가입이 완료되었습니다!'}
        # self.assertEqual(response.data['message'],"회원가입이 완료되었습니다!")
        # response.data.message로 하면 AttributeError: 'dict' object has no attribute 'message'
        self.assertEqual(response.status_code,201)

로그인

test_signup에서 만든 유저는 사라진다
각 테스트케이스는 독립적이므로 하나의 함수에서 사용된 데이터베이스는 초기화되기 때문

# Destroying test database for alias 'default'...
# 모든 테스트는 독립적이다 아니면 회원가입이랑 로그인이랑 같이 작성하든가
# 아니면 setup을 사용해서 데이터를 먼저 세팅해준다
    
class UserLoginTest(APITestCase):    
    def setUp(self):
        # self.user=Users.objects.create_user(
        #     email='test@test.com',username='test',password='1234')
        self.data = {   
                        'username':'test',
                        'email':'test@test.com',
                        'password':'1234',
                        'password_check':'1234'
                    }
        self.user=Users.objects.create_user('test@test.com','1234') #models.py create_user사용(인자로 받는 값 갯수에 맞게 써줘야함)

    def test_login(self):
        url=reverse('login_view')
        response=self.client.post(url,self.data) 
        # {'detail': ErrorDetail(string='No active account found with the given credentials', code='no_active_account')}
        print(response.data) # {'refresh':'','access':''}
        self.assertEqual(response.status_code,200)

models.py에 create_user의 인자에서 username=None이면 넣어줘도 상관없고 (default가 있으니까)
함수 인자로 username이 없으면 여기서 넣어줬을 때 unexpected keyword 오류발생

profile
looooggi

0개의 댓글