Я пишу юнит-тест для класса, который использует 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
вернуть строку, определенную мной?