gpt4 book ai didi

python 模拟 : mock. patch.object 陷阱

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:22 25 4
gpt4 key购买 nike

我编写单元测试已有一年多了,并且几乎所有内容(模块、类等)都始终使用 patch.object。

我的同事说 patch.object 永远不应该用于修补模块中的对象(即 patch.object(socket, 'socket'),相反,您应该始终使用 patch ('socket.socket').

我更喜欢 patch.object 方法,因为它允许我导入模块,并且在我看来更Pythonic。我的同事说得对吗?

注意:我已查看补丁文档,但找不到有关此主题的任何警告。 python 中的一切不都是对象吗?

最佳答案

没有这样的要求,是的,Python 中一切都是对象。

无非是一种风格选择;您自己导入模块还是 patch 为您处理这个问题?因为这是两种方法之间的唯一区别;要么patch()导入模块,要么你自己导入。

对于待测代码,我更喜欢用 mock.patch() 来处理这个问题,因为这可以确保在测试运行时进行导入 。这确保我得到测试错误状态(测试失败),而不是加载测试时出现问题。所有其他模块都是公平的游戏。

关于python 模拟 : mock. patch.object 陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256361/

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