我有一个模块导入另一个模块,如下所示:
#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”的测试 现在而不是获得适当的流量 他们得到了上述 mock 的回应。
有什么想法吗?
- 非常确定它不相关,但我使用
pytest
来运行我的测试
最佳答案
使用patch
在上下文中定义应该使用模拟的 fetch
的范围。在下面的示例中,在 with
block 之外,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
关于导入模块的Python测试和模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49914521/