class ProductTest(APITestCase):
'''
작성자: 장소은
내용:
작성일: 2023.06.06
'''
@classmethod
def setUpTestData(cls):
cls.user = User.objects.create_user(email="testuser@test.com", name="장소은", password="Xptmxm123@456")
cls.user_data = {"email": "testuser@test.com", "password": "Xptmxm123@456"}
cls.admin = User.objects.create_superuser(email="adminuser@test.com", name="관리자소은", password="Xptmxm123@456")
cls.admin_data = {"email": "adminuser@test.com", "password": "Xptmxm123@456"}
# Faker를 사용해서 랜덤 product를 만듦
cls.faker = Faker()
cls.category = ShopCategory.objects.create(category_name=cls.faker.word(), category_number=1)
cls.product = ShopProduct.objects.create(product_name=cls.faker.word(), product_desc=cls.faker.sentence(), product_price=1000, category=cls.category.id)
def setUp(self):
self.admin_access_token = self.client.post(reverse('log_in'), self.admin_data).data['access']
self.access_token = self.client.post(reverse('log_in'), self.user_data).data['access']
def test_post_product(self):
print("123")
response = self.client.post(
path=reverse("product_view", kwargs={"product_id":self.product.id}),
data=self.product_data,
HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
)
python manage.py test shop
Found 1 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
E
======================================================================
ERROR: setUpClass (shop.tests.ProductTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\.venv\lib\site-packages\django\test\testcases.py", line 1466, in setUpClass
cls.setUpTestData()
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\shop\tests.py", line 24, in setUpTestData
cls.product = ShopProduct.objects.create(product_name=cls.faker.word(), product_desc=cls.faker.sentence(), product_price=1000, category=category.id)
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\.venv\lib\site-packages\django\db\models\manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\.venv\lib\site-packages\django\db\models\query.py", line 656, in create
obj = self.model(**kwargs)
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\.venv\lib\site-packages\django\db\models\base.py", line 543, in __init__
_setattr(self, field.name, rel_obj)
File "C:\Users\user\Desktop\develop_project_etc\Eco_Canvas\.venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 266, in __set__
raise ValueError(
ValueError: Cannot assign "1": "ShopProduct.category" must be a "ShopCategory" instance.
----------------------------------------------------------------------
Ran 0 tests in 0.858s
FAILED (errors=1)
Destroying test database for alias 'default'...
(.venv)
=> ShopProduct 모델의 category는 foreign key이기 때문에 ShopCategory의 인스턴스여야 한다는
해당 부분 수정하고 다시 돌렸음
- cls.product_data = {'product_name':"test111", 'product_desc':"ddd", 'category':cls.category.id} 추가
또 에러났던 원인..
def get_absolute_url(self):
return reverse('product_view', kwargs={"category_id": self.id})
해당 absolute_url을 잘 못 주고 있었다
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 65일차 TIL - 리액트로 프론트 구현하기 (1) | 2023.06.11 |
---|---|
내일배움캠프 64일차 TIL - 카카오 로그인.. (0) | 2023.06.11 |
내일배움캠프 TIL 62일차 - 파이널 프로젝트 EcoCanvas S.A (2/2) (1) | 2023.06.07 |
내일배움캠프 TIL 61일차 - EcoCanvas S.A (1/2) (0) | 2023.06.06 |
내일배움캠프 TIL 60일차 - poetry (0) | 2023.06.05 |