如果要修补对象,则必须始终修补模块中使用的对象,例如,如果您以以下形式导入对象:
from x importy在模块中
module,必须修补
module.y而不是
x.y。这是在描述文档,并且有一个很好的博客文章由斯内德尔德在详细描述问题。在您的情况下,您需要:
@patch("path.to.using_module.REL_PATH", "another/custom/path/file.csv")def test_create_anomalies_repository_csv(self): create_csv(missing_path_here="test")只要
path.to.using_module.py输入这样的常量:
from path.for.setting import REL_PATH
您尝试过的另一个变体是等效的,也可以使用:
def test_create_anomalies_repository_csv(self): with path("path.to.using_module.REL_PATH", "another/custom/path/file.csv") create_csv(missing_path_here="test")总而言之,您始终必须检查如何导入要使用的对象。基本上有两种情况:
- 该对象是在进口
sut.py
像import module
或import module.object
在这种情况下,它可以被修补为-module.object
- 该对象的导入方式
sut.py
类似from module import object
-在这种情况下,sut.py
使用本地引用来引用该对象,并且应为sut.object



