我试图理解这两种模仿方法的方法之间的区别。有没有人能帮我区分一下?在本例中,我使用passlib库。
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)发布于 2015-03-20 02:26:24
您已经发现了不同之处;mock.patch()接受一个字符串,该字符串将在应用补丁时解析为一个对象,而mock.patch.object()则接受一个直接引用。
这意味着mock.patch()不需要在打补丁之前导入对象,而mock.patch.object()需要在打补丁之前导入对象。
如果您已经有了对对象的引用,则后者更易于使用。
https://stackoverflow.com/questions/29152170
复制相似问题