python - 模拟一个从 ... import 中幸存的包
问题描述
在一个测试用例中,我想keras
在我不知道用户将如何导入该包的地方模拟包。这意味着我需要支持
import keras
from keras import something
from keras.backend import otherthings
from keras.sub.subsub....module import somethingelse
我尝试使用一个Mock
对象来执行以下操作:
from unittest.mock import Mock
m = Mock()
sys.modules['keras'] = m
import keras # Success
from keras import backend # Success
from keras.backend import a # Failed: ModuleNotFoundError: No module named 'keras.backend'; 'keras' is not a package
我当然可以添加一行
sys.modules['keras.backend'] = m
绕过这个错误,但我不知道用户明天是否想要另一个模块 - 我只需要添加模块列表,这似乎不是一个好的选择。
有什么方法可以递归地模拟这个模块吗?
解决方案
推荐阅读
- reactjs - moment.js 在特定日期转换为 ISO 输出 null + 警告
- c++ - 为什么装饰器模式实现需要一个与核心类共同的抽象超类?
- reactjs - 如何从其他组件调用方法以使 onClick 选项工作
- angular - 创建具有多个表单数组的表
- android - 何时使用 addFlags 或 setFlags 来删除堆栈中的活动?
- maven - 在解决依赖关系之前运行 maven 插件
- android - 有没有办法在一个应用程序中同时使用两个语言环境?
- gatsby - 如何安装“gatsby-plugin-sharp”插件
- java - 获取特定键的循环占位符引用错误
- c - Codechef 问题的运行时错误:修改的斐波那契数列。有什么错误?