我是 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...
它不起作用,因为original_config
不是config
. 它引用了相同的模块,最终进入无限循环。我可以尝试克隆原始config
模块,但这似乎有点过头了。
有没有类似于我可以使用的 RSpec 模拟的东西?例如:
obj.stub(:message).with('an_expected_argument').and_return('a_mocked_result')
任何帮助,将不胜感激。谢谢。