有没有更好的方法从Django" as_view"中获取CBV实例?机制

时间:2016-08-15 18:01:20

标签: python django

我有一个简单的测试,使用Django的RequestFactory作为视图。我的观点,设置了我想要测试的一些状态(这不是一个很好的例子,但关键是我想在处理请求之后在视图中测试一些状态而不是用HTML解析它没有充分的理由):

def some_test(self):
    rf = RequestFactory()
    get_request = rf.get('/foo/')
    view = MyView.as_view()
    response = view(
        get_request,
        foo="hello",
        bar="world"
    )
    self.assertEquals( ??.sentence_to_display, "hello world")

查看内部我无法看到获取用于处理请求的视图实例的方法,??是我在get设置{{1}的视图实例的占位符}}

我能想到的最好的事情是在我的CBV中覆盖self.sentence_to_display

dispatch

然后改变我的测试,例如:

def dispatch(self, request, *args, **kwargs):
    request.META["__the_view__"] = self
    return super(MyView, self).dispatch(request, *args, **kwargs)

虽然我的例子是任意的,但我的CBV有很多方法可以在通过模板呈现HTML之前计算很多东西。我相信Django渲染模板,我不想测试模板,我希望在调用后测试CBV方法和实例的状态。

当我只想对def some_test(self): rf = RequestFactory() get_request = rf.get('/foo/') view = MyView.as_view() response = view( get_request, foo="hello", bar="world" ) self.assertEquals( get_request['__the_view__'].sentence_to_display, "hello world") 用于构建响应的方法进行单元测试时,我真的不想使用BeautifulSoup挖掘大量输出。

有更好的方法吗?我错过了这一点吗?

非常感谢。

Django 1.6不幸

0 个答案:

没有答案
相关问题