python - 如何在 Python 中使用猴子修补来替换特定参数?

标签 python monkeypatching

我想使用猴子补丁将所有语句如 time.sleep(5) 更改为 myServer.sleep(5)。我怎样才能意识到呢?非常感谢!

import test
import subprocess
import ast
import os
import time
import sys

if __name__ == "__main__":

    def insomniac(duration):
        pass  # don't sleep

    _original_sleep = time.sleep
    time.sleep = insomniac

    def dont_write(stuff):
        pass  # don't write

    _original_write = sys.stdout.write
    sys.stdout.write = dont_write

    execfile("test.py")

    exit(0)

最佳答案

如果您的重点是测试,即您希望确保以特定方式调用某些您无法控制的外部库中的可调用项,那么可以使用测试库来帮助您,例如 mock .正确设置所有这些东西可能非常复杂,因此当我编写代码时,我通常会尝试以尽量减少模拟使用的方式来构建我的代码。

看看 documentation for mock如果你真的想让你的脚趾朝这个方向弄湿。此时,您可能应该正式化您的测试技术以利用 unitttest .如果你迷路了,Writing unit tests in Python: How do I start? .

关于python - 如何在 Python 中使用猴子修补来替换特定参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397940/

相关文章:

python - 如何限制单个IP地址访问Flask?

python-3.x - Monkeypatch setenv 值在 python unittest 中跨测试用例持续存在

go - Go 中的猴子修补实例

python - 用py2exe生成的exe找不到pywinauto

django - Monkey 修补了 django auth 的登录,现在它的测试失败了

python - Python 中可以进行深度猴子修补吗?

python - py2app'ed 应用程序在别名模式下正常运行但在捆绑时不能

python - 即将到来的 MongoEngine 生日

python - 创建自定义数据集

python - 如何使用 python 子进程处理大量输入的管道 `head`?