Макет функции без ее выполнения с помощью unittest

#python #python-unittest

#python #python-unittest

Вопрос:

У меня есть функция, которая загружает данные из data.json файла, определенного models.py следующим образом:

 def load_data():
    file_path = Path(__file__).parent / 'data.json'
    with open(file_path, 'r') as file:
        data = json.load(file)['data']
        return data

loaded_data = load_data()
  

Я использовал loaded_data все функции, определенные в models.py . data.json Файл содержит массив JSON.

Мой test_models.py следующий:

 from unittest.mock import patch
from models import ... (a list of function to test)


# For replaceing model.load_data()
mock_data = []
def get_mock_data():
    return mock_data


@patch('models.load_data', side_effect= get_mock_restaurants)
class TestRestaurantsModel(unittest.TestCase):
  

Однако каким-то образом реальное models.load_data все равно выполняется. Я знаю это, потому что я изменил file_path to randomabc.json и получил FileNotFoundError . Как я могу предотвратить выполнение models.load_data ? Мне не нужно издеваться models.load_data по существу. Мне просто нужно предотвратить ее выполнение во время теста и назначить фиктивные данные models.data .

Комментарии:

1. Пожалуйста, укажите load_data функцию. Где вы это определяете? Я не видел, чтобы вы вызывали load_data функцию.

2. Я отредактировал. Пожалуйста, проверьте.