I'm somewhat new to mocking for unit tests.
I have some code like this:
In foo/bar/baz.py I have 2 functions I want to mock, one calls the other:
def function1_to_mock():
.
.
.
def function2_to_mock():
function1_to_mock()
In foo/bar/main.py I import 1 of these and call it:
from .baz import function2_to_mock
def some_function():
function1_to_mock()
.
.
.
I want to mock both function1_to_mock and function2_to_mock
In my test I do this:
def function1_to_mock(kid):
return MOCKED_VALUE
@pytest.fixture(autouse=True)
def mock_dependencies():
with patch(foo.bar.baz.function1_to_mock') as mock_function1_to_mock, \
patch('foo.bar.main.function2_to_mock') as mock_function2_to_mock:
mock_function2_to_mock.return_value = {
'this': 'that
}
yield mock_function1_to_mock, mock_function2_to_mock
def test_main(mock_dependencies):
some_function()
When some_function is called the real function1_to_mock and function2_to_mock are called instead of my mock.
Can someone please let me know how to properly mock these 2 functions.