jpe*_*thy 3 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':
return mocked_result
else:
return original_config.get(key)
config.get = Mock(side_effect=side_effect)
# actualy_test_something...
Run Code Online (Sandbox Code Playgroud)
它不会工作,因为original_config
不是的副本config
。它引用了以无限循环结尾的同一模块。我可以尝试克隆原始config
模块,但这似乎是过分的。
我可以使用类似于RSpec的模拟吗?例如:
obj.stub(:message).with('an_expected_argument').and_return('a_mocked_result')
任何帮助,将不胜感激。谢谢。
你需要存储到未打补丁的函数的引用第一:
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)
Run Code Online (Sandbox Code Playgroud)
在original_config_get
用Mock()
对象替换原始功能之前,这里引用了原始功能。
归档时间: |
|
查看次数: |
2273 次 |
最近记录: |