You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mock函数时,如何自动生成@mock.patch所需的目标函数路径?

Python Mock自动生成目标函数路径的简便方法

确实有几种简便方法可以避免手动输入冗长的Mock路径:

  • 利用函数的__module__+__qualname__属性自动拼接
    如果你能直接引用到目标函数,可以通过它的内置属性获取完整路径,不用手动拼写层级:

    from folder1.folder2.file import MyClass
    target_func = MyClass.get_some_information
    mock_path = f"{target_func.__module__}.{target_func.__qualname__}"
    
    # 直接使用生成的路径
    @mock.patch(mock_path, side_effect=mocked_information)
    def test_something(mocked_func):
        # 测试逻辑
        pass
    
  • Mock被测试模块内的导入引用
    若被测试模块已经导入了目标函数,直接Mock这个模块内的短路径即可。比如被测试模块tested_module.py中有:

    from folder1.folder2.file.class import get_some_information
    

    测试时可以简化为:

    @mock.patch('tested_module.get_some_information', side_effect=mocked_information)
    
  • 用patch.object简化类方法Mock
    针对类的方法,patch.object允许直接传入类和方法名,完全省略路径拼写:

    from folder1.folder2.file import MyClass
    
    @mock.patch.object(MyClass, 'get_some_information', side_effect=mocked_information)
    def test_something(mocked_method):
        # 测试逻辑
        pass
    

内容的提问来源于stack exchange,提问作者M__

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:10:30