[TIP] Patching the same object in multiple modules, resulting in a single Mock object to the patched function
sarvi at yahoo.com
Wed Nov 23 13:58:41 PST 2016
I am testing some code that is distributed across multiple modules. Each module imports a single method that I want to mock, Say check_call from subprocess or open from builtins.
I want to mock out these methods from the multiple modules with one mock object. Whats the best way to do it.
# I don't want to see the following, where multiple mock open objects get passed at patch('module1.open',new=mopen)@patch('module2.open',new=mopen)def test_case1(mopen1, mopen2): m1_open.side_effect = [OSError]
m2_open.side_effect = [OSError] # Test code
I want to see something like the following at patch.special(['module1.open', 'module2.open', 'module3.open'], new=mopen)@patch('module2.open',new=mopen)def test_case1(mopen): mopen.side_effect = [OSError, OSError] '# Test code
Is there a way to do this?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the testing-in-python