在一个Django应用程序中嘲笑装饰者

2024-03-29 11:30:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想测试一下

  • 如果视图装饰器工作正常
  • 如果调用正确的视图

所以,这里是装饰器get_object和视图{}在{}中。在

@get_object
def features(request, object):
    return {}

我试着嘲笑这个:

^{pr2}$

这没有显示任何内容,好像没有调用mock对象,尽管我认为它应该被调用。在

我怎样才能恰当地模仿装饰过的风景呢?在


Tags: 对象视图内容getreturnobjectrequestdef
1条回答
网友
1楼 · 发布于 2024-03-29 11:30:52

当您调用patch时,您正在用一个全新的MagicMock替换视图。由于您正在为您的视图手动构造一个mock,因此您应该执行类似(未测试)的操作:

new_view = Mock(__name__='features', return_value={})
features = get_object(new_view)

with patch('myapp.views.features', features):
    client = Client()
    response = client.get('/features')
    print new_view.call_args

这将用您的手摇模拟代替myapp.views.features。在

不过,在一般情况下,你会推荐你的客户在没有装饰的测试中使用Django。你真的把两个测试混合在一起。第一个是确保decorator完成它的职责,另一个是确保请求被正确地路由。在

相关问题 更多 >