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此处适当。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)