只有特定参数的Python模拟函数
我是Python新手,我试图仅在传递特定参数时模拟函数。如果传递的不是所需的参数,我想调用原始函数 在Python 2.7中,我尝试了以下方法:只有特定参数的Python模拟函数,python,python-2.7,python-mock,Python,Python 2.7,Python Mock,我是Python新手,我试图仅在传递特定参数时模拟函数。如果传递的不是所需的参数,我想调用原始函数 在Python 2.7中,我尝试了以下方法: from foo import config def test_something(self): original_config = config # config is a Module. def side_effect(key): if key == 'expected_argument':
from foo import config
def test_something(self):
original_config = config # config is a Module.
def side_effect(key):
if key == 'expected_argument':
return mocked_result
else:
return original_config.get(key)
config.get = Mock(side_effect=side_effect)
# actualy_test_something...
它不会工作,因为原始配置
不是配置
的副本。它引用同一个模块,该模块以无限循环结束。我可以试着克隆原始的config
模块,但这似乎有些过头了
有类似的东西我可以用吗?e、 g:
obj.stub(:message.),带有('an'u expected'u argument')和\u return('a'u mock'u result')
任何帮助都将不胜感激。谢谢。您需要先存储对未修补函数的引用:
这里的
original\u config\u get
引用了原始函数,然后将其替换为Mock()
对象。在config.get=Mock…
行上的缩进是否正确?@PetrGladkikh是的。然后我不明白它是如何执行的。if
的两个分支都以return
结尾,所以这一行似乎永远也达不到。
def test_something(self):
original_config_get = config.get
def side_effect(key):
if key == 'expected_argument':
return mocked_result
else:
return original_config_get(key)
config.get = Mock(side_effect=side_effect)