我試圖從庫函式的回傳值中模擬一個屬性的屬性mlflow.get_run(run_id).data.metrics。我知道如何模擬這樣的單層:
m = mock.MagicMock(spec_set=mlflow.get_run)
type(m).metrics = mock.PropertyMock(side_effect=[1, 2])
print(m.metrics)
print(m.metrics)
###output
1
2
如果我模擬嵌套屬性,但我收到錯誤“MagicMock 沒有屬性‘資料’”
type(m).data.metrics = mock.PropertyMock(side_effect=[1, 2])
模擬嵌套屬性的正確方法是什么?
uj5u.com熱心網友回復:
您需要基本上重復您為m和所做的事情data。將屬性的 設定return_value為data另一個MagickMock,然后將其型別設定為PropertyMock。
from unittest import mock
m = mock.MagicMock(spec_set=mlflow.get_run)
type(m).data = mock.PropertyMock(return_value=mock.MagicMock())
type(type(m).data).metrics = mock.PropertyMock(side_effect=[1, 2])
print(m.data.metrics)
# 1
print(m.data.metrics)
# 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427120.html
