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): # 测试逻辑 passMock被测试模块内的导入引用
若被测试模块已经导入了目标函数,直接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__
相关产品推荐
相关产品推荐

