我正在使用 Python 模拟模块进行测试。我想用模拟替换活动对象,并自动将对模拟对象的所有调用转发到原始对象。我认为这在标准测试术语中被称为“间谍”。目前我正在做一个测试:
# Insert a mock replacement
orig_active_attr = server.active_attr
server.active_attr = mock.Mock()
# Set up side effects to 'proxy' to the original object
server.active_attr.meth1.side_effect = orig_active_attr.meth1
server.active_attr.meth2.side_effect = orig_active_attr.meth2
# Call the method being tested
server.method_being_tested()
# Assert stuff on the mock.
server.active_attr.meth2.assert_called_once()
如果 mock 上的所有方法调用都可以在没有样板的情况下自动转发到 live 对象,那就太好了。