테스트 코드를 도입해볼까 싶어서 공부중이다.
class TestViewSetTestCase(TestCase):
def setUp(self):
self.factory = APIRequestFactory()
self.view = TestViewSet.as_view({'get': 'list'})
self.user = mock.Mock()
self.admin_user = mock.Mock()
self.user.is_authenticated = True
self.admin_user.is_authenticated = True
self.admin_user.is_staff = True
일단 어드민 유저만 접근 가능한 api를 테스트해 보려고 한다.
위는 유저 mock data를 만든 것이고
데이터베이스에 생성 테스트까지 해보고싶다면
def setUp(self):
self.factory = APIRequestFactory()
self.view = TestViewSet.as_view({'get': 'list'})
self.user = User.objects.create(username='testuser')
self.admin_user = User.objects.create(username='adminuser', is_staff=True)
위처럼 만들어본다.
그럼 테스트 동안에 임시로 만들고 제거가 되는 테스트 계정을 만들어볼 수 있다.
근데 테스트를 하는데 authentication은 어떻게해야하나 생각이 들었다.
장고 공식문서를 찾아보니 강제적으로 authentication을 부여하는 모듈이 있었다.
def test_list_admin(self):
request = self.factory.get('/test/')
request.user = self.admin_user
force_authenticate(request, user=self.admin_user)
response = self.view(request)
self.assertEqual(response.status_code, 200)
위처럼 view의 api를 call 해서 해당 어드민 계정으로 테스트할 때
force_authenticate라는 모듈로 강제적으로 auth를 부여해서 테스트해볼 수 있다.
참고
'Python > django' 카테고리의 다른 글
Django Migration 사용 안하고 DDL 사용하기(2) (0) | 2023.05.17 |
---|---|
Django Migration 사용 안하고 DDL 사용하기(1) (1) | 2023.05.16 |
Django 메서드 & python 메서드 (0) | 2023.05.03 |
Django를 이용한 포토폴리오 만들기 - (1) (0) | 2023.03.18 |
drf request 정리 (0) | 2022.05.10 |