小编Shi*_*tel的帖子

如何模拟使用别名导入的函数?

下面我添加了一些虚拟代码,它们准确地代表了我想要做的事情。

我正在从具有别名的类导入函数,我这样做是因为该类本身正在运行别名版本。

我尝试过的事情:

  • 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

Run Code Online (Sandbox Code Playgroud)

我认为问题的根源在于类文件使用别名调用函数,并且似乎没有办法修补别名函数调用。我能想到的简单且最天真的解决方案就是不使用别名。

python unit-testing mocking

8
推荐指数
1
解决办法
2121
查看次数

标签 统计

mocking ×1

python ×1

unit-testing ×1