gpt4 book ai didi

python - 如何在 Django 的基于类的 View 中对方法进行单元测试?

转载 作者:太空狗 更新时间:2023-10-29 17:58:34 26 4
gpt4 key购买 nike

我需要在基于 Django 类的 View 中测试方法和辅助函数。

考虑这个基于类的 View :

class MyClassBasedView(View):

def dispatch(self, request, *args, **kwargs):
....

def __get_render_dict():
d = {}
...
return d

def my_method(self):
render_dict = self.__get_render_dict()
return render_response(self.request, 'template.html', render_dict)

为了为我的 View 编写单元测试,我需要调用里面的方法,直接说__get_render_dict()。我怎样才能做到这一点?

我试过了

v = MyClassedBasedView() 
v.dispatch(request,args, kwargs)
v.__method_name()

但这失败了,因为 post/get 方法中的参数不匹配,即使我在不​​使用 URL 的情况下直接调用该方法也是如此。

最佳答案

要在单元测试中使用基于类的 View ,请尝试来自 heresetup_view .

def setup_view(view, request, *args, **kwargs):
"""
Mimic ``as_view()``, but returns view instance.
Use this function to get view instances on which you can run unit tests,
by testing specific methods.
"""

view.request = request
view.args = args
view.kwargs = kwargs
return view

你仍然需要给它一个请求,你可以用 django.test.RequestFactory 来做到这一点:

    factory = RequestFactory()
request = factory.get('/customer/details')

然后您可以对您的方法进行单元测试:

v = setup_view(MyClassedBasedView(), request) 
v.method_name()

关于python - 如何在 Django 的基于类的 View 中对方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645780/

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