导入模块

时间:2018-04-19 06:52:38

标签: python python-3.x python-2.7 pytest

我有一个导入另一个模块的模块:

#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来运行我的测试

1 个答案:

答案 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