Python 不使用unittest执行模拟函数
我有一个函数,可以从Python 不使用unittest执行模拟函数,python,python-unittest,Python,Python Unittest,我有一个函数,可以从models.py中定义的data.json文件加载数据,如下所示: 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() from unitt
models.py
中定义的data.json
文件加载数据,如下所示:
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()
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.py
中定义的所有功能中使用了加载的\u数据。data.json
文件包含一个json数组
我的test_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()
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):
然而,真正的模型.load\u data
仍然会执行。我知道这一点,因为我将文件路径
更改为randomabc.json
,并获得了FileNotFoundError
。如何防止执行模型。加载数据
?我不需要模拟模型。基本上加载数据。我只需要在测试期间阻止其执行,并将模拟数据分配给模型。数据
请提供加载数据
功能。你在哪里定义它?我没有看到您在函数中调用load\u data
。我编辑了。请查收。