2014-10-30 58 views
0

低於模擬代碼:我怎麼寫乾淨蟒蛇模擬代碼嵌套屬性模擬

mockSuper = mock.MagicMock() 
type(mockSuper).role = mock.PropertyMock(
    return_value=mock.MagicMock()) 
type(mockSuper.role).role = mock.PropertyMock(return_value='Super') 

我要的是mockSuper.role.role = "my value"。但上面的代碼看起來不太直截了當。這是我第一次使用python mock,所以我認爲應該有一些更好的代碼版本。 :)

回答

0

我只是這樣做:

>>> import unittest.mock 
>>> m = unittest.mock.Mock() 
>>> m.role.role = "some_value" 
>>> m.role.role 
'some_value' 

但我不知道,如果你真的想在該屬性堅持一個字符串。也許這僅僅是首先運行一些東西,並在最後斷言。

def test(): 
    mock = Mock() 
    mock_role_role = function_returning_mock_role_role(mock) 
    assert mock_role_role == mock.role.role 

如果你有一個選擇離開我建議不要對測試法律的,得墨忒耳侵犯 - 如果你第一次測試,例如。