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 |