【问题标题】:Passing kwargs to class based view in unittest在单元测试中将 kwargs 传递给基于类的视图
【发布时间】:2017-06-02 10:36:31
【问题描述】:

我有这样的测试:

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。

任何帮助将不胜感激。

【问题讨论】:

  • 如果@daniel-roseman 的回答对你有用,你能接受吗?

标签: python django unit-testing testing


【解决方案1】:

调用视图时传递它。

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

【讨论】:

    猜你喜欢
    • 2021-01-22
    • 2017-11-11
    • 2017-06-02
    • 2013-01-09
    • 2017-02-25
    • 2015-10-03
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多