小编luc*_*y14的帖子

如何使用mock的@patch模拟在单独的Python模块中定义的函数

我正在尝试使用mock和@patch装饰器为Python应用程序构建测试.

给定以下目录结构:

  |-- mypackage
  |   |-- mymodule
  |   |   |-- __init__.py
  |   |   \-- somefile.py
  |   \-- myothermodule
  |       |-- tests
  |       |   |-- __init__.py
  |       |   \-- test_func_to_test.py
  |       \-- __init__.py
  \-- __init__.py
Run Code Online (Sandbox Code Playgroud)

文件内容如下:


#mypackage/mymodule/somefile.py

def some_function():
    return 'A'
Run Code Online (Sandbox Code Playgroud)
#mypackage/myothermodule/__init__.py

from mypackage.mymodule.somefile import some_function

def func_to_test():
    return some_function()
Run Code Online (Sandbox Code Playgroud)
#mypackage/myothermodule/tests/test_func_to_test.py

from unittest import TestCase
from mock import patch

class TestFunc_to_test(TestCase):
    def test_func_to_test(self):
        from mypackage.myothermodule import func_to_test
        self.assertEqual('A', func_to_test())

    @patch('mypackage.mymodule.somefile.some_function')
    def test_func_to_test_mocked(self, some_mock_function):
        from mypackage.myothermodule import func_to_test
        some_mock_function.return_value = 'B'
        self.assertEqual('B', …
Run Code Online (Sandbox Code Playgroud)

python mocking

6
推荐指数
1
解决办法
2315
查看次数

标签 统计

mocking ×1

python ×1