python - 是否可以在 python 中转移模块? (ResourceX 转为 ResourceXSimulated)

标签 python testing mocking module monkeypatching

我想模拟导入模块 (ResourceX) 的 MyApp,该模块需要当时不可用且无法运行的资源。

一个解决方案是制作并导入 ResourceX 的模拟模块(名为 ResourceXSimulated),并将其作为 ResourceX 转移到 MyApp。我想这样做是为了避免破坏大量代码并从 MyApp 获取各种异常。

我正在使用 Python,它应该是这样的:

“将 ResourceXSimulated 导入为 ResourceX”

“ResourceX.getData()”,实际调用的是ResourceXSimultated.getData()

期待了解 Python 是否支持这种重定向。

干杯。

附加信息:我可以访问源文件。

更新:我正在考虑向 MyApp 添加尽可能少的关于使用假模块的代码,并将此代码添加到导入语句附近。

最佳答案

只需将 MyApp 中的所有行 import ResourceX 更改为 import ResourceXSimulated as ResourceX,以及 from ResourceX import Y code> 到 from ResourceXSimulated import Y

但是,如果无法访问 MyApp 源代码或有其他原因无法更改它,您可以将模块放入 sys.modules 之前 MyApp 自行加载:

import ResourceXSimulated
sys.modules['ResourceX'] = ResourceXSimulated

注意:如果 ResourceX 是一个包,它可能需要更多的努力。

关于python - 是否可以在 python 中转移模块? (ResourceX 转为 ResourceXSimulated),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443173/

相关文章:

c# - 我如何模拟 HttpRequestMessage,特别是 CreateResponse?

python - 如何使用 reverse() 将 Django 请求中的 Referer URL 与另一个 URL 进行比较?

python - 向量化大型 NumPy 乘法

python - 远程客户端的 Redis Pubsub 性能

在 Python/Flask 中测试计划任务

c# - 我可以让 Moq 为模拟类添加属性吗?

testing - 如何在返回带有上下文参数的函数的函数中模拟 koa 上下文

python - OpenCV Hough行不显示

python - 使用 BeautifulSoup 更改元素值返回空元素

testing - QTP: HTML Tag 被识别,但是点击功能没有响应