代码之家  ›  专栏  ›  技术社区  ›  An Nguyen

pytest mock-模拟模块中的函数

  •  3
  • An Nguyen  · 技术社区  · 6 年前

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

    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')
    

    但是,它仍然试图使用 string.get_random_string 而不是我创造的模仿,除非我改变我的 工程机械 到:

    from main.utils import string
    
    def generate_random_string():
        return string.get_random_string()
    

    如何在不引入整体的情况下实现嘲弄部分 string 模块到 工程机械 ?

    1 回复  |  直到 6 年前
        1
  •  6
  •   An Nguyen    6 年前

    我成功地通过改变 mocker.patch('main.utils.string.get_random_string', return_value='123456') mocker.patch('engine.get_random_string', return_value='123456')

    细节可以找到 here