我正在为使用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
函数如何返回我定义的字符串?
答案 0 :(得分:1)
您可以修补此功能吗?
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())