gpt4 book ai didi

python - 模拟和猴子修补有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 20:58:01 25 4
gpt4 key购买 nike

我使用 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 中被称为“猴子补丁” .我还看到“模拟”一词经常与“猴子修补”一起使用,或者在看起来非常相似的场景中使用。

这两个概念有什么区别吗?

最佳答案

Monkey patching在运行时用另一个函数/方法/类替换一个函数/方法/类,用于测试目的、修复错误或以其他方式改变行为。

unittest.mock library使用猴子补丁来用模拟对象替换部分被测软件。它提供了编写巧妙的单元测试的功能,例如:

  • 它记录了模拟对象是如何被调用的,所以你可以测试带有断言的代码的调用行为。
  • 一个方便的装饰器 patch() 用于实际的猴子修补。
  • 您可以使模拟对象返回特定值 (return_value),引发特定异常 (side_effect)。
  • 模拟“魔术方法”(例如 __str__)。

例如,您可以使用模拟来替换客户端中的网络 I/O(urllib、请求),因此单元测试无需依赖外部服务器即可工作。

关于python - 模拟和猴子修补有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701226/

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