gpt4 book ai didi

python - mock.patch.object(... 和 mock.patch(

转载 作者:IT老高 更新时间:2023-10-28 20:36:31 26 4
gpt4 key购买 nike

我试图了解这两种模拟方法之间的区别。有人可以帮助区分它们吗?对于这个例子,我使用 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)

最佳答案

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

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

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

关于python - mock.patch.object(... 和 mock.patch(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com