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

如何Mock函数内部初始化的类以验证其方法调用是否符合预期

问题根因

当前测试不生效的核心原因是混淆了Mock类和Mock实例的调用关系:你通过mock.patch替换的是Handler类本身,而run是Handler类实例的成员方法,并非类本身的方法,直接对被Mock的类对象断言run被调用必然无法匹配执行逻辑。

修复方案

首先确认patch路径符合哪里使用就在哪里patch的原则:只要handler函数所在的模块内确实是引用的function.Handler,你当前使用的function.handler.Handler路径是正确的。
仅需要调整断言的对象为Handler实例的Mock对象即可,修复后的测试代码如下:

def test_main_call_handler():
    with mock.patch('function.handler.Handler') as mock_handler_cls:
        # 获取Handler实例化后的Mock对象
        mock_handler_instance = mock_handler_cls.return_value
        handler({}, object())
        # 可选断言:Handler实例化时传入了正确的参数
        mock_handler_cls.assert_called_once_with(event={}, context=mock.ANY)
        # 断言实例的run方法被调用
        mock_handler_instance.run.assert_called_once()

如果需要自定义run方法的返回值,直接给mock_handler_instance.run.return_value赋值即可,示例:

mock_handler_instance.run.return_value = {"status": "success"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:24:03