我有一些实用程序功能src/utils/helper.py
想象一下,我有一个func_a
在 utils/helper.py 中调用的函数,它在我的项目中的多个地方使用。
每次我使用它时,我都会像这样导入它
from src.utils.helper import func_a
现在我想func_a
在我的测试中模拟这个。
我想在 conftest.py 中创建一个夹具,这样我就不需要为每个测试文件一次又一次地编写模拟函数。
问题是,在我的模拟函数中,我不能这样写。
https://pypi.org/project/pytest-mock/
mocker.patch('src.utils.helper.func_a', return_value="some_value", autospec=True)
我必须为每个测试文件这样写
mocker.patch('src.pipeline.node_1.func_a', return_value="some_value", autospec=True)
根据文档https://docs.python.org/3/library/unittest.mock.html#where-to-patch
由于我正在导入,因此func_a
我from src.utils.helper import func_a
必须模拟使用它的位置而不是定义它的位置。
但是这种方法的问题是我无法在 conftest.py 的夹具中定义它
目录结构
├── src
│ ├── pipeline
│ │ ├── __init__.py
│ │ ├── node_1.py
│ │ ├── node_2.py
│ │ └── node_3.py
│ └── utils
│ ├── __init__.py
│ └── helper.py
└── tests
├── __init__.py
├── conftest.py
└── pipeline
├── __init__.py
├── test_node_1.py
├── test_node_2.py
└── test_node_3.py