模拟没有 `if __name__=="__main__":` 块的脚本

Mocking a script with no `if __name__=="__main__":` block

假设我的根目录中有文件 main.pycommon.py。这些代表我暂时不想接触的第三方模块。假设我还有一个 test.py 文件,我想用它来测试 main.py.

common.py 包含以下内容:

def hello():
  print("hello")

main.py 包含以下内容:

from common import hello

hello()

有没有办法对 test.py 中的 hello 函数进行猴子修补,以便导入 main.py 时使用模拟函数?例如,我想猴子补丁 hello 打印出 goodbye.

非常简单:

import common

common.hello = lambda: print("goodbye")

import main