如何在python中修补不同文件中的requests.get
我有2个python文件:1个用于单元测试(tests.py),1个用于我要测试的脚本(main.py): - 我想修补如何在python中修补不同文件中的requests.get,python,unit-testing,mocking,patch,Python,Unit Testing,Mocking,Patch,我有2个python文件:1个用于单元测试(tests.py),1个用于我要测试的脚本(main.py): - 我想修补请求。get返回测试响应,但修补不起作用,因为它试图发送请求/连接到提供的url。我认为补丁名requests.get并不像一些人在网上提到的那样,针对main.py中使用它的地方(因为它指的是定义它的地方)。但在这种情况下,我不知道如何解决这个问题 如果main.py中正在使用导入请求,那么如何从另一个文件对其进行修补?谢谢。发现我需要在创建修补程序的调用结束时添加.star
请求。get
返回测试响应
,但修补不起作用,因为它试图发送请求/连接到提供的url。我认为补丁名requests.get
并不像一些人在网上提到的那样,针对main.py中使用它的地方(因为它指的是定义它的地方)。但在这种情况下,我不知道如何解决这个问题
如果main.py中正在使用
导入请求
,那么如何从另一个文件对其进行修补?谢谢。发现我需要在创建修补程序的调用结束时添加.start()
:
# setup mocks
patch('requests.get', mock.Mock(side_effect=some_handler).start()
如果这个解决方案有任何问题,或者有更好的处理方法,我很乐意听到
# In tests.py
from unittest import mock
from unittest.mock import patch
from my_project.main import get_response
def some_handler(url):
return "test_response"
class GetResponseTestCase(unittest.TestCase):
def setUp(self):
# setup mocks
patch('requests.get', mock.Mock(side_effect=some_handler)
def run_test(self):
result = get_response("test_response")
# setup mocks
patch('requests.get', mock.Mock(side_effect=some_handler).start()
from unittest import mock
class GetResponseTestCase(unittest.TestCase):
@mock.patch("my_project.main.get_response") ##mocking get_response
def run_test(self, mocked_get_response):
mocked_get_response.return_value = "test_response" ## setting return value