Mocking a class: Mock() or patch()? 对一个类进行Mock:Mock()还是patch()?

8 浏览
0 Comments

Mocking a class: Mock() or patch()? 对一个类进行Mock:Mock()还是patch()?

我正在使用Python的mock库,并想知道这两种方法哪个更好(即更符合Python的风格)。

方法一:只需创建一个模拟对象并使用它。代码如下:

def test_one (self):
    mock = Mock()
    mock.method.return_value = True 
    self.sut.something(mock) # 这将调用mock.method并检查结果。 
    self.assertTrue(mock.method.called)

方法二:使用patch创建一个模拟对象。代码如下:

@patch("MyClass")
def test_two (self, mock):
    instance = mock.return_value
    instance.method.return_value = True
    self.sut.something(instance) # 这将调用mock.method并检查结果。 
    self.assertTrue(instance.method.called)

这两种方法都能实现相同的功能。我不确定它们之间的区别。

有人能给我一些启示吗?

0