首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mock.patch.object(... )有什么区别?和mock.patch(

mock.patch.object(... )有什么区别?和mock.patch(
EN

Stack Overflow用户
提问于 2015-03-20 02:18:56
回答 1查看 23K关注 0票数 83

我试图理解这两种模仿方法的方法之间的区别。有没有人能帮我区分一下?在本例中,我使用passlib库。

代码语言:javascript
复制
from passlib.context import CryptContext
from unittest import mock

with mock.patch.object(CryptContext, 'verify', return_value=True) as foo1:
    mycc = CryptContext(schemes='bcrypt_sha256')
    mypass = mycc.encrypt('test')
    assert mycc.verify('tesssst', mypass)

with mock.patch('passlib.context.CryptContext.verify', return_value=True) as foo2:
    mycc = CryptContext(schemes='bcrypt_sha256')
    mypass = mycc.encrypt('test')
    assert mycc.verify('tesssst', mypass)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 02:26:24

您已经发现了不同之处;mock.patch()接受一个字符串,该字符串将在应用补丁时解析为一个对象,而mock.patch.object()则接受一个直接引用。

这意味着mock.patch()不需要在打补丁之前导入对象,而mock.patch.object()需要在打补丁之前导入对象。

如果您已经有了对对象的引用,则后者更易于使用。

票数 131
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29152170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档