Maquette vs MagicMock
Ma compréhension est que MagicMock est un sur-ensemble de se Moquer de qui effectue automatiquement la "magie des méthodes" ainsi, de façon transparente fournir soutien pour les listes, les itérations et ainsi de suite... Alors quelle est la raison de la plaine se Moquer de existant? N'est-ce pas juste une version allégée de MagicMock qui peut être pratiquement ignoré? Ne se Moquer de classe de connaître toutes les astuces qui ne sont pas disponibles dans MagicMock?
Vous devez vous connecter pour publier un commentaire.
Quelle est la raison de la plaine se Moquer de existant?
Se moquer de l'auteur, Michael Foord, adressée une question très semblable à Pycon 2011 (31:00):
À se Moquer de vous peut se moquer de méthodes magiques, mais vous devez les définir. MagicMock a "des implémentations par défaut de la plupart des méthodes magiques.".
Si vous n'avez pas besoin de tester les méthodes magiques, Maquette est adéquate et ne pas apporter beaucoup d'autres choses dans vos tests. Si vous avez besoin de tester un grand nombre de méthodes magiques MagicMock va vous faire économiser du temps.
Pour commencer,
MagicMock
est une sous-classe deMock
.Comme un résultat, MagicMock offre tout ce que Simulacre d'offre et plus. Plutôt que de penser que de se Moquer comme une version allégée de MagicMock, pensez à MagicMock comme une version étendue de la Maquette. Cela devrait répondre à vos questions sur le pourquoi de Fantaisie qui existe et ce qui ne se Moquer de fournir sur le dessus de MagicMock.
Deuxièmement, MagicMock fournit des implémentations par défaut de beaucoup de/la plupart des méthodes magiques, alors que la Maquette n'est pas. Voir ici pour plus d'informations sur les méthodes magiques fourni.
Quelques exemples de méthodes magiques:
Et ces qui ne peuvent pas être aussi intuitive (au moins pas intuitif pour moi):
Vous pouvez "voir" les méthodes ajoutée à MagicMock que ces méthodes sont invoquées pour la première fois:
Pourquoi donc ne pas utiliser MagicMock tout le temps?
La question est: Êtes-vous d'accord avec la valeur par défaut de la magie implémentations de méthode? Par exemple, est-il acceptable pour
mocked_object[1]
à pas d'erreur? Êtes-vous d'accord avec les conséquences imprévues en raison de la méthode magique implémentations d'être déjà là?Si la réponse à ces questions est oui, alors allez-y et utilisez MagicMock. Sinon, s'en tenir à se Moquer.
C'est ce que la documentation officielle de python
dit: