in Python 3.6, I use unittest.mock.patch
to patch a function like this:
class SampleTest(TestCase):
@mock.patch('some_module.f')
def test_f(self, mocked_f):
f()
mocked_f.assert_called()
This passes a mock.MagicMock()
as mocked_f
and everything works fine. However, when I want to use a custom mock object instead of the default mock.MagicMock()
using new
argument, the patch decorator does not pass the mocked object to the test_f
method. Running this code will raise a TypeError
:
class SampleTest(TestCase):
@mock.patch('some_module.f', new=lambda: 8)
def test_f(self, mocked_f):
f()
mocked_f.assert_called()
TypeError: test_f() missing 1 required positional argument: 'mocked_f'
My question is: why is this happening?