Se moquant d'une classe: Maquette() ou patch()?

Je suis en utilisant maquette avec Python et je me demandais laquelle de ces deux approches est la mieux (lire: plus pythonic).

De la méthode: il suffit de créer un objet fantaisie et l'utiliser. Le code ressemble à:

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)

Méthode deux: patch pour créer une maquette. Le code ressemble à:

@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)

Les deux méthodes de faire la même chose. Je ne suis pas sûr de la différence.

Quelqu'un pourrait-il m'éclairer?

  • En tant que personne qui n'ont jamais essayé soit de se Moquer() ou le patch, j'ai l'impression que la première version est plus claire et montre ce que vous voulez faire, même si je n'ai pas de compréhension de la différence réelle. Je ne sais pas si c'est utile ou pas, mais j'ai pensé qu'il pourrait être utile de transmettre ce qu'un non-initié, le programmeur peut se sentir.
  • Je vous remercie pour votre commentaire. Il est utile en effet.
InformationsquelleAutor Sardathrion | 2011-11-18