在 Python whl 文件中模拟一个函数
Mock a function in a Python whl file
我正在尝试为调用 .whl
文件中的函数的函数编写测试,但我正在努力模拟轮子中的函数。我在我的虚拟环境中安装了轮子 - 我在环境中使用 pip install my_wheel.whl
安装了轮子。轮子中的包称为 my_package
.
我要测试的函数看起来像这样:
from my_package import wheel_function
def my_func():
x = wheel_function()
return x + 5
我想模拟 wheel_function
所以测试只看 my_func
。
我的测试脚本:
import pytest
def mock_wheel_function():
return 5
def test_my_func(mocker):
my_mock = mocker.patch("src.wheels.my_wheel.path.to.wheel_function",
side_effect=mock_wheel_function)
# (Do stuff)
我收到以下错误:AttributeError: module 'src.wheels' has no attribute 'my_wheel'
。
我的目录结构是这样的
源码
|车轮
|........ my_wheel.whl
|模块
|........ my_module
测试
| - test_modules
|....... test_my_module
如果我尝试将路径传递到虚拟环境中的模块(即 /Users/me/venv/lib/python3.7/site-packages/....
),我会得到 ModuleNotFoundError: module '/Users/me/venv/lib/python3' not found
.
有什么想法吗?谢谢
使用 mocker.patch
时,您必须提供 Python 您正在模拟的对象的导入路径,而不是相对文件系统路径。
由于 wheel_function
包含在模块 my_package
中,您需要将模拟程序设置为
my_mock = mocker.patch(
"my_package.wheel_function",
side_effect=mock_wheel_function
)
我正在尝试为调用 .whl
文件中的函数的函数编写测试,但我正在努力模拟轮子中的函数。我在我的虚拟环境中安装了轮子 - 我在环境中使用 pip install my_wheel.whl
安装了轮子。轮子中的包称为 my_package
.
我要测试的函数看起来像这样:
from my_package import wheel_function
def my_func():
x = wheel_function()
return x + 5
我想模拟 wheel_function
所以测试只看 my_func
。
我的测试脚本:
import pytest
def mock_wheel_function():
return 5
def test_my_func(mocker):
my_mock = mocker.patch("src.wheels.my_wheel.path.to.wheel_function",
side_effect=mock_wheel_function)
# (Do stuff)
我收到以下错误:AttributeError: module 'src.wheels' has no attribute 'my_wheel'
。
我的目录结构是这样的
源码
|车轮
|........ my_wheel.whl
|模块
|........ my_module
测试
| - test_modules
|....... test_my_module
如果我尝试将路径传递到虚拟环境中的模块(即 /Users/me/venv/lib/python3.7/site-packages/....
),我会得到 ModuleNotFoundError: module '/Users/me/venv/lib/python3' not found
.
有什么想法吗?谢谢
使用 mocker.patch
时,您必须提供 Python 您正在模拟的对象的导入路径,而不是相对文件系统路径。
由于 wheel_function
包含在模块 my_package
中,您需要将模拟程序设置为
my_mock = mocker.patch(
"my_package.wheel_function",
side_effect=mock_wheel_function
)