我有以下目录
/root
/app
/api
my_api.py
/service
my_service.py
/tests
test_api.py
my_api.py
import app
def run_service():
app.service.my_service.service_function()
test_api.py
@patch('app.service.my_service.service_function')
test_run_service(self,mock_service):
mock_service.return_value = 'Mock'
response = self.client.get(url_for('api.run_service')
self.assertTrue(response == expected_responce)
以上作品。我无法弄清楚,我需要修补哪个模块,以防我想在my_apy.py中导入service_function
,如下所示:
from app.service.my_service import service_function
如果我像上面那样进行导入,模拟停止工作。
答案 0 :(得分:6)
您需要修补app.api.my_api.service_function
,因为这是已绑定到导入对象的全局名称:
@patch('app.api.my_api.service_function')
test_run_service(self, mock_service):
mock_service.return_value = 'Mock'
response = self.client.get(url_for('api.run_service')
self.assertTrue(response == expected_responce)
基本原则是你在查找对象的地方进行修补,这不一定与定义它的位置相同。