I'm new to Python and I'm trying to mock a function only when a specific argument is passed. If other than the desired argument is passed, I'd like to call the original function instead.
In Python 2.7 I tried something like this:
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...
It won't work 'cause
original_config is not a copy of
config. It references the same module ending up in an infinite loop. I could try cloning the original
config module instead but that seems to be overkill.
Is there something similar to RSpec's mocks I could use? e.g:
Any help would be appreciated. Thanks.