【发布时间】:2020-05-28 19:11:31
【问题描述】:
下面我添加了一些虚拟代码,它们完全代表了我正在尝试做的事情。
我正在从一个具有别名的类中导入一个函数,我这样做是因为该类正在运行别名版本本身。
我尝试过的事情:
- http://bhfsteve.blogspot.com/2012/06/patching-tip-using-mocks-in-python-unit.html这并没有给出具体的问题解决方案。
- 将
a.dummy.class.function.alias修补为a.dummy.class.function这允许执行但不会运行 alias_function_mocker(),因为在类中该函数被称为 alias() 而不是 function() - 我尝试以
a.dummy.class.function.alias运行,但这会导致属性错误,因为别名实际上不是类的属性(因为 function() 是)
from a.dummy.class import function as alias
def alias_function_mocker():
return 0
@patch("a.dummy.class.function.alias", side_effect=alias_function_mocker):
def test_function(mocked_function):
function_calling_alias()
return 0
我认为问题的根源在于类文件正在使用别名调用函数,并且似乎没有办法修补别名函数调用。我能想到的最简单最天真的解决方案就是不要使用别名。
【问题讨论】:
标签: python unit-testing mocking