pytest-mock - 从模块中模拟一个函数

时间:2018-06-11 09:28:34

标签: python pytest

我的模块engine.py中有一个util,它是从另一个文件导入的:

from main.utils.string import get_random_string

def generate_random_string():
    return get_random_string()

在我的测试文件中:

def test_generate_random_string(mocker):
    mocker.patch('main.utils.string.get_random_string', return_value='123456')

然而,' S仍然试图用真正落实string.get_random_string,而不是我&#39的模拟;已经创建,除非我改变我的engine.py为:

from main.utils import string

def generate_random_string():
    return string.get_random_string()

如何在不将整个string模块导入engine.py的情况下实现模拟部分?

1 个答案:

答案 0 :(得分:2)

我已成功实现了这一目标,方法是将mocker.patch('main.utils.string.get_random_string', return_value='123456')更改为mocker.patch('engine.get_random_string', return_value='123456')

可以找到详细信息here