【发布时间】:2016-02-12 06:18:06
【问题描述】:
我需要在 django 基于类的视图中测试方法和辅助函数。
考虑这个基于类的视图:
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)
为了为我的视图编写单元测试,我需要调用里面的方法,直接说__get_render_dict()。我怎样才能做到这一点?。
我试过了
v = MyClassedBasedView()
v.dispatch(request,args, kwargs)
v.__method_name()
但这会失败,因为 post/get 方法中的参数不匹配,即使我在不使用 URL 的情况下直接调用该方法。
【问题讨论】:
-
__get_render_dict中的方法是什么意思? -
咳咳……你为什么要直接实例化 CBV(和调度)? Django 会为您执行此操作,只需将
urls.py中的视图插入为url(r'whateverpattern$',MyClassBasedView.as_view(), name='viewname'), -
另外,请正确缩进您的代码,以确保我们都理解相同的内容。
-
我的回答解决了你的问题吗?如果是,请接受,如果不是,请说明您的问题。
标签: python django unit-testing django-class-based-views