首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修补局部函数?

如何修补局部函数?
EN

Stack Overflow用户
提问于 2021-01-28 21:40:54
回答 1查看 119关注 0票数 0
代码语言:javascript
运行
复制
def f(a):
    return a*2

def g(a):
    return f(a)

g(1)
# 2

with patch("f") as mock_f:
    mock_f.return_value = 123
    g(1)

我想要实现的是f总是返回123,因此g(1)也返回123。相反,我得到了一条错误消息:

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
~\Anaconda3\lib\unittest\mock.py in _get_target(target)
   1547     try:
-> 1548         target, attribute = target.rsplit('.', 1)
   1549     except (TypeError, ValueError):

ValueError: not enough values to unpack (expected 2, got 1)

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-52-4dac247bb108> in <module>
      8 # 2
      9 
---> 10 with patch("f") as mock_f:
     11     mock_f.return_value = 123
     12     g(1)

~\Anaconda3\lib\unittest\mock.py in patch(target, new, spec, create, spec_set, autospec, new_callable, **kwargs)
   1702     available for alternate use-cases.
   1703     """
-> 1704     getter, attribute = _get_target(target)
   1705     return _patch(
   1706         getter, attribute, new, spec, create,

~\Anaconda3\lib\unittest\mock.py in _get_target(target)
   1548         target, attribute = target.rsplit('.', 1)
   1549     except (TypeError, ValueError):
-> 1550         raise TypeError("Need a valid target to patch. You supplied: %r" %
   1551                         (target,))
   1552     getter = lambda: _importer(target)

TypeError: Need a valid target to patch. You supplied: 'f'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-28 22:09:28

请试一下这个。

代码语言:javascript
运行
复制
from unittest.mock import patch

def f(a):
    return a * 2


def g(a):
    return f(a)


with patch("__main__.f") as mock_f:
    mock_f.return_value = 2
    result = g(1)
    assert result == 2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65938262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档