python - 导入调用中的模拟方法调用
问题描述
我正在为使用 Keras lib 的类编写单元测试。我的课看起来像这样:
class MyClass:
def __init__(self):
...
self.model = Sequential()
…
def save(self):
…
model_json = self.model.to_json()
json_file.write(model_json)
...
因为在我的单元测试类中导入 Keras 大约需要 3 秒,所以我像这样嘲笑它们:
sys.modules['keras'] = MagicMock()
sys.modules['keras.models'] = MagicMock()
sys.modules['keras.layers'] = MagicMock()
当我运行save
函数测试时,我得到model_json
一个MagicMock
对象而不是str
. 实际上self.model.to_json()
返回一个 MagicMock 对象。我尝试了许多不同的方法来self.model.to_json()
返回我的字符串,但到目前为止没有任何效果。我如何才能返回我make to_json()
定义MyClass
的字符串?
解决方案
你能修补这个功能吗?
import json
class MyClass:
def to_json():
return json.dumps({'to_json': 'default'})
my_class = MyClass()
my_class.to_json = lambda: json.dumps({'hello': 'world'})
print(my_class.to_json())
推荐阅读
- css - 物化 CSS 模态在另一个模态中被裁剪
- android - Android App + Firebase 初始化失败
- regex - std::regex lib 适用于 linux 吗?
- c# - 在 selenium C# 中识别工作链接和不工作链接
- node.js - nodejs azure keyvault 证书
- java - 将 Blockly 生成的 XML 代码解析为 Java 对象
- arrays - 在过滤文档中使用 `filter`、`some` 和 `includes` 未按预期工作
- sql - 如何在类似 SQL 的函数中使用 sysdate 命令
- android - AndroidX:未注册仪器!必须在注册仪器下运行
- excel - Excel VBA:插入新行时自动排序