_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

woncoding/TIL

TIL | 10.31.월 [Django : DRF]

2022. 10. 31. 23:50

- Django Rest Framework

 

  • Django에서 사용할 수 있는 툴들의 종류에 대해서 안다.
  • DRF에서 회원가입 기능을 테스트 할 수 있다.
  • DRF에서 로그인 기능을 테스트 할 수 있다.
  • setUp 메소드를 사용할 수 있다.
  • class method를 이해한다.
  • static method를 이해한다.
  • DRF에서 게시글 작성을 테스트할 수 있다.
  • Faker를 사용할 수 있다.
  • get absolute url의 사용목적과 방법을 이해한다.
  • dictionary의 items 메소드 사용법을 이해한다.
  • serializermethodfield로 연관 테이블의 정보를 가져올 수 있다.

 

 


 

[tests.py]

  • DRF에서 회원가입 기능을 테스트 할 수 있다.
  • DRF에서 로그인 기능을 테스트 할 수 있다.
  • setUp 메소드를 사용할 수 있다.
''' TestCase 기본 작동 방식
class TestView(TestCase):
    def test_two_is_three(self):
        # 괄호 안 적은 인자의 값이 assertEqual 같은지?
        self.assertEqual(2,3)

    def test_two_is_two(self):
        self.assertEqual(2,2)

- python manage.py test 와 tests.py를 이용해 views.py에서 정의한 함수나 class를 테스트 해볼 수 있다.
- App 별로 : test를 돌릴땐 "python manage.py test app이름" 으로 실행시켜준다.
'''

----------------------------------------------------------------------------------

# 1. 회원정보 테스트 코드 및 setUp code 🔥 
class UserRegistrationTest(APITestCase):
    def test_registration(self):
        url = reverse("user_view")
        user_data = {
            "username":"testuser",
            "fullname":"tester",
            "email":"test@test.com",
            "password":"1234",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 200)
        
        
---------------------------------------------------------------------------------------------------------------------------

''' 테스트용 database는 생긴 뒤, 초기화 시켜주기 때문에 위에서 UserRegistrationTest 로 만든 유저가 db에 저장뒤 삭제되므로, 똑같은 코드일지라도 test_login 함수에선 초기화된 db로 로그인을 하게 되는것이기 떄문에 user가 인증되지 않았기 때문에 401 error가 뜨게된다.

    def test_login(self):
        url = reverse("token_obtain_pair")
        user_data = {
            "username":"testuser",
            "fullname":"tester",
            "email":"test@test.com",
            "password":"1234",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 200)

    # FAIL: test_login (users.tests.UserRegistrationTest)
'''
# 그래서, django rest framework에서 제공하는 setup이라는 test tool을 이용해 db에서 초기화 되지 않는 user를 만들어 준 뒤, testcase를 작성해 여러가지 테스트를 진행시켜준다.
---------------------------------------------------------------------------------------------------------------------------

🔥
class LoginUserTest(APITestCase):
    def setUp(self):
        self.data = {'username':'won', 'password':'1234'}
        self.user = User.objects.create_user('won', '1234')
    def test_login(self):
        response = self.client.post(reverse('token_obtain_pair'), self.data)
        print(response.data["access"])
        self.assertEqual(response.status_code, 200)


    # 2. Article Test code : 게시글 테스트코드 🔥 
    def test_get_user_data(self):
        access_token = self.client.post(reverse('token_obtain_pair'), self.data).data["access"]
        response = self.client.get(
           path = reverse("user_view"),
           HTTP_AUTHORIZATION=f"Bearer {access_token}"
        )
        # self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.data['username'])

 

 

저작자표시 비영리 변경금지 (새창열림)

'woncoding > TIL' 카테고리의 다른 글

TIL | 11.2.수 [AWS]  (0) 2022.11.04
TIL | 11.1.화 [AWS]  (0) 2022.11.03
TIL | 10.28.금 [Django : DRF]  (0) 2022.10.31
TIL | 10.27.목 [Django : DRF]  (0) 2022.10.28
TIL | 10.26.수 [Django : DRF]  (0) 2022.10.27
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 11.2.수 [AWS]
    • TIL | 11.1.화 [AWS]
    • TIL | 10.28.금 [Django : DRF]
    • TIL | 10.27.목 [Django : DRF]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바