gpt4 book ai didi

python - Django Rest Framework - 如何测试 ViewSet?

转载 作者:IT老高 更新时间:2023-10-28 22:25:29 25 4
gpt4 key购买 nike

我在测试 ViewSet 时遇到问题:

class ViewSetTest(TestCase):
def test_view_set(self):
factory = APIRequestFactory()
view = CatViewSet.as_view()
cat = Cat(name="bob")
cat.save()

request = factory.get(reverse('cat-detail', args=(cat.pk,)))
response = view(request)

我正在尝试复制这里的语法:

http://www.django-rest-framework.org/api-guide/testing#forcing-authentication

但我认为他们的 AccountDetail View 与我的 ViewSet 不同,所以我从最后一行收到此错误:

AttributeError: 'NoneType' object has no attributes 'items'

这里有正确的语法还是我混淆了概念?我的 APIClient 测试工作,但我在这里使用工厂,因为我最终想添加“request.user = some_user”。提前致谢!

哦,客户端测试工作正常:

def test_client_view(self):
response = APIClient().get(reverse('cat-detail', args=(cat.pk,)))
self.assertEqual(response.status_code, 200)

最佳答案

我想我找到了正确的语法,但不确定它是否是传统的(对 Django 来说还是新的):

def test_view_set(self):
request = APIRequestFactory().get("")
cat_detail = CatViewSet.as_view({'get': 'retrieve'})
cat = Cat.objects.create(name="bob")
response = cat_detail(request, pk=cat.pk)
self.assertEqual(response.status_code, 200)

所以现在这通过了,我可以分配 request.user,这允许我自定义 CatViewSet 下的检索方法以考虑用户。

关于python - Django Rest Framework - 如何测试 ViewSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com