我使用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
我在这个问题中看到这被称为"猴子修补" .我还看到"模拟"这个词与"钱修补"或者似乎非常相似的场景一起使用了很多.
这两个概念有什么区别吗?
Monkey修补在运行时将另一个函数/方法/类替换为测试purpses,修复bug或以其他方式改变行为.
该unittest.mock图书馆利用猴子补丁的由模拟对象测试来代替你的软件的一部分.它提供了编写聪明的单元测试的功能,例如:
它记录了如何调用模拟对象,因此您可以使用断言测试代码的调用行为.
patch()
实际猴子修补的方便装饰.
您可以使模拟对象返回特定值(return_value
),引发特定异常(side_effect
).
嘲弄'魔法'(例如__str__).
例如,您可以使用模拟来替换客户端中的网络I/O(urllib,请求),因此单元测试可以在不依赖外部服务器的情况下工作.