2017-06-02 32 views
0

我有测试这样的:传递kwargs基于类视图在单元测试

def test_getting_delete_view_invokes_point_changes_and_returns_status_200(self, point_changes): 
     request = RequestFactory().get(reverse('questions:delete-help', kwargs={'pk': 1})) 
     view = DeleteHelp.as_view() 
     view.kwargs['pk'] = 1 
     response = view(request) 

而我的看法功能:

class DeleteHelp(DeleteView, LoginRequiredMixin): 

    model = Help 
    template_name = 'confirm_deletion.html' 

    def get_object(self, queryset=None): 
     return get_object_or_404(Help, pk=self.kwargs['pk'], author=self.request.user) 

    def get_success_url(self): 
     point_pk = self.object.answer_to.plan_point.point_of.id 
     point_changes(point_obj=self.object.answer_to.plan_point) 
     return reverse('plans:display-public', args=[point_pk]) 

的问题是,我怎么传“PK”有?我在get_object方法中不断收到错误KeywordError 'pk'。如果我使用self.client访问此视图,那么它工作(为什么?),但我想使用RequestFactory。

任何帮助,将不胜感激。

回答

2

您在调用视图时传递它。

view = DeleteHelp.as_view() 
response = view(request, pk=1)