Monkey-patch内置函数用于单元测试?

Don*_*ion 7 python unit-testing monkeypatching

我不想在我的unittest中创建真实文件.所以我发现自己经常修补无意义的样板并为伪文件创建模拟工厂.我想知道这些毫无意义的努力是否会更好(在这种情况下)并尝试类似于本地unittest方法的范围:

open = lambda x: StringIO()
Run Code Online (Sandbox Code Playgroud)

这样可以吗?或者是否存在重大警告/不采用这种方法并且更好地使用模拟工厂?

Mar*_*cin 6

这很好,只要你了解python范围是如何工作的(即本地很好,全局会导致问题).

您可能还应该考虑您的monkeypatches将具有与原始版本不同的失败模式,并进行适当的测试以确保您的代码与内置函数正确交互.