1. Cart
이번에는 cart api 테스트 코드를 작성했다.
cart의 경우 get, post, put, delete의 모든 기능이 있었기 때문에 모든 부분을 진행했고, cart-detail에 관련된 부분은 reverse 내부에서 args를 설정했다.
from django.urls import reverse
from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework_simplejwt.tokens import RefreshToken
from carts.models import Cart
from products.models import *
class CartTest(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='example', password='Password123!')
refresh = RefreshToken.for_user(self.user)
self.client.credentials(HTTP_AUTHORIZATION='Bearer {0}'.format(refresh.access_token))
self.category = Category.objects.create(
category_name = 'test category',
main_description = 'test main description',
sub_description = 'test sub description'
)
self.feeling = Feeling.objects.create(name='test feeling')
self.skin_type = SkinType.objects.create(name='test skin type')
self.ingredient = Ingredient.objects.create(name='test ingredient')
self.product = Product.objects.create(
name = 'test name',
price = 1000.00,
size = 'test size',
description = 'test description',
category = self.category,
howtouse = {'test':'test'},
badge = 'test badge'
)
self.cart = Cart.objects.create(
user = self.user,
product = self.product,
quantity = 3
)
def test_cart_list_get(self):
response = self.client.get(reverse('cart-list'))
self.assertEqual(response.status_code, 200)
def test_cart_detail_get(self):
response = self.client.get(reverse('cart-detail', args=(self.cart.id, )))
self.assertEqual(response.status_code, 200)
def test_cart_create(self):
data = {
"product" : self.product.id,
"quantity": 5
}
response = self.client.post(reverse('cart-list'), data)
self.assertEqual(response.status_code, 201)
def test_cart_update(self):
data = {
"product" : self.product.id,
"quantity": 3
}
response = self.client.put(reverse('cart-detail', args=(self.cart.id, )), data)
self.assertEqual(response.status_code, 200)
def test_cart_delete(self):
response = self.client.delete(reverse('cart-detail', args=(self.cart.id, )))
self.assertEqual(response.status_code, 204)
2. Registration
마지막으로 registration 부분의 테스트 코드를 작성했다. django에서 제공하는 user 모델을 사용했지만, serializer에서 password_check를 설정했기 때문에 테스트 코드에서도 작성해주었다.
from django.urls import reverse
from django.contrib.auth.models import User
from rest_framework.test import APITestCase
from rest_framework_simplejwt.tokens import RefreshToken
class RegisterTest(APITestCase):
def test_register(self):
data = {
"username" : "example",
"email" : "example@aaa.com",
"password" : "Password123!",
"password_check": "Password123!"
}
response = self.client.post(reverse('register'), data)
self.assertEqual(response.status_code, 201)
'Django' 카테고리의 다른 글
[Django] DRF - 1차 프로젝트 리팩토링 (4) API Testing (1) | 2022.06.14 |
---|---|
[Django] DRF - 1차 프로젝트 리팩토링 (3) Cart (0) | 2022.06.09 |
[Django] DRF - 1차 프로젝트 리팩토링 (2) Category detail & list GET (0) | 2022.06.07 |
[Django] DRF - 1차 프로젝트 리팩토링 (1) Product detail & list GET (0) | 2022.06.07 |
[Django] DRF - API Testing (0) | 2022.06.01 |