模拟类:Mock()或patch()?

模拟类:Mock()或patch()?,第1张

模拟类:Mock()或patch()?

mock.patch
与…是一个非常不同的生物
mock.Mock

patch
模拟对象 替换 该类,并允许您使用模拟实例。看一下这个片段:

>>> class MyClass(object):...   def __init__(self):...     print 'Created MyClass@{0}'.format(id(self))... >>> def create_instance():...   return MyClass()... >>> x = create_instance()Created MyClass@4299548304>>> >>> @mock.patch('__main__.MyClass')... def create_instance2(MyClass):...   MyClass.return_value = 'foo'...   return create_instance()... >>> i = create_instance2()>>> i'foo'>>> def create_instance():...   print MyClass...   return MyClass()...>>> create_instance2()<mock.Mock object at 0x100505d90>'foo'>>> create_instance()<class '__main__.MyClass'>Created MyClass@4300234128<__main__.MyClass object at 0x100505d90>

patch``MyClass
以允许您控制所调用函数中类的用法的方式进行替换。修补类后,对该类的引用将完全由模拟实例替换。

mock.patch
通常在测试要在测试内部创建类的新实例的东西时使用。
mock.Mock
实例更清晰,更可取。如果您的
self.sut.something
方法创建了的实例
MyClass
而不是将实例作为参数接收,则
mock.patch
此处适当。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5644174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存