使用Python的mock库来对现有对象的调用进行监视

6 浏览
0 Comments

使用Python的mock库来对现有对象的调用进行监视

我正在使用Python的mock模块进行测试。我想用一个模拟对象替换一个活动对象,并自动将所有对模拟对象的调用转发给原始对象。我认为在标准的测试术语中,这被称为"Spy"。目前,在测试中我是这样做的:

# 插入一个模拟替代品
orig_active_attr = server.active_attr
server.active_attr = mock.Mock()
# 设置副作用以将调用“代理”给原始对象
server.active_attr.meth1.side_effect = orig_active_attr.meth1
server.active_attr.meth2.side_effect = orig_active_attr.meth2
# 调用被测试的方法
server.method_being_tested()
# 对模拟对象进行断言
server.active_attr.meth2.assert_called_once()

如果所有对模拟对象的方法调用都可以自动转发给活动对象,而不需要这些样板代码,那就太好了。

0