我有一个导入另一个模块的模块:
#main-file.py
import src.FetchFunction.video_service.fields.urls as urls
def some_func():
return urls.fetch()
现在我想像这样测试这个文件:
import unittest
import src.FetchFunction.video_service.fields.urls as urls
from unittest.mock import MagicMock
class MainFileTest(unittest.TestCase):
def test_example(self):
urls.fetch = MagicMock(return_value='mocked_resp')
assertSomething()
这部分效果很好,可以做我想要的。 但 这会影响其他测试文件...... 我的意思是我有其他测试使用" urls.fetch" 现在而不是获得适当的流量 他们得到了上述嘲弄的回应。
有什么想法吗?
pytest
来运行我的测试答案 0 :(得分:1)
在上下文中使用patch
来定义应使用模拟fetch
的范围。在下面的示例中,with
块之外的urls.fetch
将恢复为原始值:
import unittest
from unittest.mock import patch
class MainFileTest(unittest.TestCase):
def test_example(self):
with patch('urls.fetch', return_value='mocked_resp'):
# urls.fetch is mocked now
assertSomething()
# urls.fetch is not mocked anymore