I am trying to learn unittest patching. I have a single file that both defines a function, then later uses that function. When I try to patch this function, its return value is giving me the real return value, not the patched return value.
How do I patch a function that is both defined and used in the same file? Note: I did try to follow the advice given here, but it didn't seem to solve my problem.
walk_dir.py
from os.path import dirname, join from os import walk from json import load def get_config(): current_path =dirname(__file__) with open(join(current_path, 'config', 'json', 'folder.json')) as json_file: json_data = load(json_file) return json_data['parent_dir'] def get_all_folders(): dir_to_walk = get_config() for root, dir, _ in walk(dir_to_walk): return [join(root, name) for name in dir]
test_walk_dir.py
from hello_world.walk_dir import get_all_folders from unittest.mock import patch @patch('walk_dir.get_config') def test_get_all_folders(mock_get_config): mock_get_config.return_value = 'C:\\temp\\test\\' result = get_all_folders() assert set(result) == set('C:\\temp\\test\\test_walk_dir')