我使用python,我对测试有点新意。我经常看到测试用如下的本地方法替换外部依赖:
import some_module
def get_file_data():
return "here is the pretend file data"
some_module.get_file_data = get_file_data
# proceed to test
我在question中看到这被称为“猴子修补”。我还看到“模拟”这个词与“钱修补”或者似乎非常相似的场景一起使用了很多。
这两个概念有什么区别吗?
答案 0 :(得分:7)
Monkey patching正在运行时替换另一个函数/方法/类,用于测试purpses,修复错误或以其他方式改变行为。
unittest.mock library使用猴子补丁来替换模拟对象测试的部分软件。它提供了编写聪明的单元测试的功能,例如:
patch()
用于实际的猴子修补。return_value
),引发特定异常(side_effect
)。例如,您可以使用模拟替换客户端中的网络I / O(urllib,请求),因此单元测试可以在不依赖外部服务器的情况下工作。