Pytest-mock 未修补 class 模块中的导入函数
Pytest-mock not patching imported function in class module
pytest-mock 补丁没有按预期工作。我的代码:
utils.py
:
def my_func():
return 42
classes.py
:
from utils import my_func
class MyClass:
def class_method(self):
return my_func()
test_classes.py
:
import pytest
from classes import MyClass
def test_myclass(mocker):
mocker.patch("utils.my_func", return_value=21)
assert MyClass().class_method() == 21
这失败了,return 是 42
而不是 21
。
解决方法是在测试中更改补丁。而不是
mocker.patch("utils.my_func", return_value=21)
写
mocker.patch("classes.my_func", return_value=21)
因为 classes.py
中的这一行:from .utils import my_func
.
pytest-mock 补丁没有按预期工作。我的代码:
utils.py
:
def my_func():
return 42
classes.py
:
from utils import my_func
class MyClass:
def class_method(self):
return my_func()
test_classes.py
:
import pytest
from classes import MyClass
def test_myclass(mocker):
mocker.patch("utils.my_func", return_value=21)
assert MyClass().class_method() == 21
这失败了,return 是 42
而不是 21
。
解决方法是在测试中更改补丁。而不是
mocker.patch("utils.my_func", return_value=21)
写
mocker.patch("classes.my_func", return_value=21)
因为 classes.py
中的这一行:from .utils import my_func
.