I'm trying to run asserts on the return value of a side effect. How can I declare the return value so that it won't generate a NEW MagicMock every time? (I'd like a reference to the return value so I can assert on it)
I've tried declaring this in a separate statement, which works:
return_value = mock.MagicMock()
side_effect = mock.MagicMock(side_effect = lambda *arguments: return_value)
side_effect()()
<MagicMock name='mock()' id='140388466683016'>
side_effect().assert_called_once()
However, I'd like to know if there's a way to declare everything inline so I don't have to create separate mocks for each side effect.
It would be nice to do something like this:
side_effect = mock.MagicMock(side_effect = lambda *arguments: mock.MagicMock(id=123))
side_effect()
<MagicMock id='123'> #Doesn't actually give id '123'
side_effect().assert_called_once()
#Throws an error
However, it looks like the above example creates a new MagicMock every time, meaning the assert will fail.
Am I doomed to create separate objects for every return value to keep them static?
Aucun commentaire:
Enregistrer un commentaire