setUp

 

  • setUp : 모든 test 메소드 이전에 실행한다.
  • tearDown : 모든 test 메소드 마지막에 실행한다.

 

class LoginUserTest(APITestCase):
    def setUp(self):
        self.data = {'username':'John', 'password':'password'}
        # UserManager의 create_user 함수
        self.user = User.objects.create_user('John', 'password')

    def test_login(self):
        response = self.client.post(reverse('token_obtain_pair'), self.data)
        self.assertEqual(response.status_code, 200)
    
    def test_get_user_data(self):
        access_token = self.client.post(reverse('token_obtain_pair'), self.data).data['access']
        # 토큰이 get으로 돌아옴
        response = self.client.get(
            path=reverse('user_view'),
            # 헤더에 AUTHORIZATION 담아서 bearer에 토큰 보내줌
            HTTP_AUTHORIZATION=f'Bearer {access_token}'
        )
        # 가입한 username이 로그인한 username과 동일한지
        self.assertEqual(response.data['username'], self.data['username'])

 

 

※ 여기서 알아야 할 것 ※

access토큰을 받아와 AUTHORIZATION 헤더에 넣어주는 방법에 대해 알아야 합니다.

 

 

 

@classmethod (팩토리 메소드)

  • 정적 메소드 (클래스에서 직접 접근할 수 있는 메소드)

         * 파이썬에서는 정적 메소드임에도 인스턴스에 접근이 가능하다.

  • 인스턴스를 생성하지 않고 클래스 자체에 대해 작업할 수 있다.
  • 첫 번째 인자로 클래스를 받는다.
from datetime import date

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    # 첫번째 인자는 본인 클래스
    def fromBirthYear(cls, name, birthYear):
        # cls = class Person
        return cls(name, date.today().year - birthYear)
    
    def display(self):
        print(self.name + "'s age is: " + str(self.age))


person = Person("Adam", 19)
person.display()

# 인스턴스가 없어도 classmethod는 바로 실행할 수 있음
person1 = Person.fromBirthYear('John', 1985)
person1.display()

 

 

 

@staticmethod

  • 정적 메소드
  • 추가되는 인자가 없다.
  • 단순히 편리를 위한 메소드이다.
from datetime import date

# 클래스 밖에서 선언하나 staticmethod로 선언하나 차이가 없다
def isAdult(age):
        return age > 18

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    @staticmethod
    def isAdult(age):
        return age > 18

 

'Python > Django' 카테고리의 다른 글

[DRF] 17. Faker  (0) 2023.04.30
[DRF] 16. setUpTestData  (0) 2023.04.30
[DRF] 14.5 테스트 코드 종류  (0) 2023.04.27
[DRF] 14. 테스트 코드란?  (0) 2023.04.27
[DRF] 13. 개인페이지 (Q객체, F객체)  (0) 2023.04.27

+ Recent posts