请提供一个python unittest.mock 的MagicMock 检测类方法是否被执行的例子
时间: 2024-09-30 09:04:44 浏览: 20
在Python中,unittest.mock模块的MagicMock对象可以用来模拟类的行为,包括检查方法是否被调用。下面是一个例子,展示了如何创建一个MagicMock对象,并设置它的一个类方法`my_class_method`,然后测试这个方法是否被调用:
```python
from unittest.mock import MagicMock
class MyClass:
def __init__(self):
self.my_instance_method = lambda: None
self.my_class_method = staticmethod(lambda: 'This is a class method')
# 创建一个MyClass的实例,并将my_class_method替换为MagicMock
mocked_my_class = MyClass()
mocked_my_class.my_class_method = MagicMock()
# 现在我们尝试调用my_class_method
mocked_my_class.my_class_method()
# 使用assert_called_once_with检查my_class_method是否只被调用了一次
assert mocked_my_class.my_class_method.called
assert mocked_my_class.my_class_method.call_count == 1
# 如果你想确认没有其他额外的调用,可以这么检查
assert not mocked_my_class.my_class_method.call_args_list[0][0] # 验证没有传入额外参数