【问题标题】:How can i test django rest framework class based views我如何测试基于 django rest 框架类的视图
【发布时间】:2016-01-23 17:10:16
【问题描述】:

我有这个代码

class SnippetList(generics.ListCreateAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    def get_data():
        pass

现在我想测试 get_data

我想做类似的事情

view = SnippetList.as_view()
actual = view.get_data()
expected = "test"

但我不确定如何制作视图对象

我收到此错误

*** AttributeError: 'function' object has no attribute 'get_data'

【问题讨论】:

  • get_data原来是怎么叫的?
  • @RahulGupta 在“get”方法中,self.get_data
  • 请把get_datafunction的代码和调用的地方贴出来。

标签: django python-3.x django-rest-framework


【解决方案1】:

看起来像 as_view() 返回函数,但不是对象。 你能试试这个代码吗?

view = SnippetList.as_view()(request)

【讨论】:

    【解决方案2】:

    你会发现这个功能很有用(找到here):

    def setup_view(view, request, *args, **kwargs):
        """Mimic as_view() returned callable, but returns view instance.
        args and kwargs are the same you would pass to ``reverse()``
        """
        view.request = request
        view.args = args
        view.kwargs = kwargs
        return view
    

    你可以这样使用它:

    view = setup_view(
        views.DynamicStorageDownloadView(),
        django.test.RequestFactory().get('/fake-url'),
        path='dummy path')
    path = view.get_path()
    self.assertEqual(path, 'DUMMY PATH')
    

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2016-05-29
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多