gpt4 book ai didi

python - 如何模拟从函数导入但不存在于 sys.path 中的模块?

转载 作者:太空狗 更新时间:2023-10-30 00:43:12 25 4
gpt4 key购买 nike

<分区>

我正在unittesting 代码,其中包含执行本地导入的方法。

def function_under_test():
import unknown.dependency

(我没有在 .py 文件的顶部使用导入,因为调用函数时它可能存在也可能不存在。)

以通常的方式模拟 unknown.dependency 仅当它可以在 sys.path 的某处找到时才有效。否则,对 patch 的调用将失败(它拒绝模拟它看不到的东西):

with mock.patch('unknown.dependency'):
function_under_test()
>>> ImportError: No module named 'unknown'

文档建议我应该修补到使用模块的命名空间——在本例中,function_under_test。但是,当该命名空间是一个函数时,这并不会削减它。对 patch 的调用成功,但实际的 import 语句仍然引用原始的、不存在的 unknown 模块,无法找到。

with mock.patch('method_under_test.unknown'):
print("fails")
>>> ImportError: No module named 'unknown'

那么,如果模块本身不存在并且它是从函数导入的,我该如何用模拟替换依赖模块?

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