如何测试对象方法是否被调用?Mock使用报错排查
解决Mock验证对象B的process方法调用失败问题
问题原因
- Patch路径错误:当前patch的是
"b.B",但A类中已将B导入自身命名空间,实际实例化的是A模块内的B引用,因此patch路径需改为"a.B"。 - 断言对象错误:
mock_b是B类的模拟对象,process是实例方法,需断言实例(即mock_b.return_value)的process方法,而非类本身的process属性。
修改后的测试代码
import unittest from unittest.mock import patch from a import A class TestA(unittest.TestCase): @patch("a.B") # 修正patch路径为A模块内的B引用 def test_b_call(self, mock_b): a = A() a.process('B') # 验证实例的process方法被调用一次 mock_b.return_value.process.assert_called_once()
额外提示
注意到A类中的初始化方法__inti_know_processes存在拼写错误(正确应为__init_know_processes),建议修正以避免潜在问题。
内容的提问来源于stack exchange,提问作者alyacode
相关产品推荐
相关产品推荐

