我有以下模拟代码:
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 :(得分: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
如果你还有一个选择,我建议不要测试demeter法则违规 - 例如,如果你先测试,那么。