库.py
from django.core.urlresolvers import reverse
def render_reverse(f, kwargs):
"""
kwargs is a dictionary, usually of the form {'args': [cbid]}
"""
return reverse(f, **kwargs)
测试.py
^{pr2}$但是,我得到了
File "/var/lib/graphyte-webclient/graphyte-webenv/lib/python2.6/site-packages/django/core/urlresolvers.py", line 296, in reverse
"arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'dummy_readfile' with arguments '('123',)' and keyword arguments '{}' not found.
为什么它调用reverse
而不是我的mock_reverse
(它正在查找我的网址.py!!)
您可以看到calls
返回一个空列表。我甚至assert mock_reverse.called
并且返回false。在
也许我没有提到,但是lib只是一堆函数,没有类。在
有两件事。1您需要从Django修补
reverse
。2您需要在上下文管理器中进行导入,以使lib
模块导入被模拟reverse
。在您没有传递任何关键字参数(字典),而是传递位置参数(元组)。在
此外,要反转的代理方法只传递关键字参数,而不传递位置参数。在
最后,您没有与请求的模式相匹配的URL,因为您没有传递任何关键字参数,只有位置参数。在
相关问题 更多 >
编程相关推荐