我在Python中使用模拟,并想知道这两种方法中哪一种更好(请参阅:更多pythonic)。
方法一:只需创建一个模拟对象并使用它即可。代码如下:
def test_one (self):
mock = Mock()
mock.method.return_value = True
self.sut.something(mock) # This should called mock.method and checks the result.
self.assertTrue(mock.method.called)
方法二:使用补丁创建一个模拟。代码如下:
@patch("MyClass")
def test_two (self, mock):
instance = mock.return_value
instance.method.return_value = True
self.sut.something(instance) # This should called mock.method and checks the result.
self.assertTrue(instance.method.called)
两种方法都做同样的事情。我不确定这些差异。
谁能启发我?
10
作为一个从未尝试过Mock()或补丁程序的人,即使我不了解实际的差异,我也认为第一个版本更加清晰,并显示了您想做什么。我不知道这是否有帮助,但我认为传达初学者的感觉可能很有用。
—
Michael Brennan
@MichaelBrennan:谢谢您的评论。确实是有用的。
—
Sardathrion-反对SE滥用