我是Django的新手,我正在进行单元测试。这是我的模特:
class RandomModel(models.Model):
title = models.CharField(max_length=64, null=False, blank=False)
parent_user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
parent_course = models.ForeignKey(Course, on_delete=models.CASCADE, default=1)
unique_id = models.UUIDField(
default=uuid.uuid4,
editable= False,
unique=True)
这是我的urls.py
path('myPath/retrieve/<uuid:unique_id>', views.RetrieveABCAPIView.as_view(), name = myPath_retrieve)
我在test.py
中尝试以下操作class APIStatusCodeTests(APITestCase):
def setUp(self):
"""
Sets up testing environment. Add all endpoints to be tested
"""
tbl = RandomModel.objects.create(title = 'rofl')
tbl.save()
self.retrieve_method_endpointsdeck = [
reverse('flashcards:flashcards_api:myPath_retrieve', kwargs = {'unique_id': RandomModel.objects.unique_id('unique_id')})
我应该对反向功能做出哪些改变?我不知道如何在kwargs中获得UUID?
谢谢!
答案 0 :(得分:1)
您已在测试设置方法中创建了RandomModel
对象,因此您需要在reverse
中使用该对象的UUID - 类似这样的内容:
reverse(
'flashcards:flashcards_api:myPath_retrieve',
kwargs={'unique_id': RandomModel.objects.first().unique_id}
)
请注意,这将获取数据库中找到的第一个RandomModel
对象 - 您可能希望更具体地了解要使用的对象 - 或者在此测试中创建一个对象。< / p>