猴子补丁无法正常工作
monkey patch not working properly
所以我 运行宁 py.test 并尝试使用 monkeypatch。我知道 monkeypatch 的预期目的是替换模块中的属性,以便可以测试它们。我知道我们可以用模拟函数代替来做到这一点。
目前我正在尝试 运行 本质上是以下代码块。
from src.module.submodule import *
def mock_function(parameter = None):
return 0
def test_function_works(monkeypatch):
monkeypatch.setattr("src.module.submodule.function",mock_function ]
assert function(parameter = None) == 0
当测试 运行s 时,不是交换 mock_function
,而是 运行s function
。 monkeypatch 没有激活是不是有原因
我之前用其他代码成功地获得了猴子补丁运行ning。所以我不明白为什么这不起作用。
好像打错了,应该是吧
monkeypatch.setattr("src.module.submodule.function",mockIfunction)
即mockIfunction
而不是 mock_function
?
我没有为这些东西使用过 pytest,但我知道使用 mock
库,函数在调用它们的命名空间中被修补。即 from src.module.submodule import *
将 src.module.submodule.function
导入您的命名空间,但您随后在其原始命名空间中对其进行了修补,因此该函数的本地名称仍然可以访问原始的、未修补的代码。
如果将其更改为
import src.module.submodule
def mock_function(parameter = None):
return 0
def test_function_works(monkeypatch):
monkeypatch.setattr("src.module.submodule.function",mock_function ]
assert src.module.submodule.function(parameter = None) == 0
成功了吗?
所以我 运行宁 py.test 并尝试使用 monkeypatch。我知道 monkeypatch 的预期目的是替换模块中的属性,以便可以测试它们。我知道我们可以用模拟函数代替来做到这一点。
目前我正在尝试 运行 本质上是以下代码块。
from src.module.submodule import *
def mock_function(parameter = None):
return 0
def test_function_works(monkeypatch):
monkeypatch.setattr("src.module.submodule.function",mock_function ]
assert function(parameter = None) == 0
当测试 运行s 时,不是交换 mock_function
,而是 运行s function
。 monkeypatch 没有激活是不是有原因
我之前用其他代码成功地获得了猴子补丁运行ning。所以我不明白为什么这不起作用。
好像打错了,应该是吧
monkeypatch.setattr("src.module.submodule.function",mockIfunction)
即mockIfunction
而不是 mock_function
?
我没有为这些东西使用过 pytest,但我知道使用 mock
库,函数在调用它们的命名空间中被修补。即 from src.module.submodule import *
将 src.module.submodule.function
导入您的命名空间,但您随后在其原始命名空间中对其进行了修补,因此该函数的本地名称仍然可以访问原始的、未修补的代码。
如果将其更改为
import src.module.submodule
def mock_function(parameter = None):
return 0
def test_function_works(monkeypatch):
monkeypatch.setattr("src.module.submodule.function",mock_function ]
assert src.module.submodule.function(parameter = None) == 0
成功了吗?