栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模拟类: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
此处适当。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号