Comment tester cette fonction est appelée dans une fonction avec nosetests
Je suis en train de mettre en place certains automatique de l'unité de test pour un projet. J'ai quelques fonctions, comme un des effets secondaires parfois appeler une autre fonction. Je veux écrire un test unitaire qui ne teste que la deuxième fonction est appelée, mais je suis perplexe. Ci-dessous est pseudocode exemple:
def a(self):
data = self.get()
if len(data) > 3500:
self.b()
# Bunch of other magic, which is easy to test.
def b(self):
serial.write("\x00\x01\x02")
Comment puis-je tester que b()
-est appelée?
OriginalL'auteur msvalkon | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vous moquer de la fonction
b
à l'aide de maquette module et de vérifier si il a été appelé. Voici un exemple:Voir aussi:
Espère que ça aide.
b
écrit des trucs sur le port série, je dirais que vous se moquer de lui dans un test unitaire.Merci, c'est précisément ce que je dois faire.
OriginalL'auteur alecxe
Diverses solutions sont possibles pour cette chose. Mais d'abord, je dois souligner que le test unitaire est conçu pour tester les unités; ce qui d'une part est peut être une question de voir les choses. Dans votre cas, je dirais une unité est la fonction
a()
parce que vous souhaitez tester votre appareil se comporte correctement en ce sens qu'elle appelle la fonctionb()
au bon endroit. Un autre point de vue serait de dire que les fonctionsa()
etb()
d'une unité. Ensuite, vous ne pas comme pour vérifier si la fonctionb()
est appelée, vous voulez juste tester le résultat de l'appel de la fonctiona()
. Donc, assurez-vous de votre esprit qui convient à votre cas le mieux.Dans le cas où vous voulez vraiment tester la fonction
a()
comme une unité, vous devez préparer de votre appareil testé. Dans votre cas, ce qui pourrait être fait par l'adjonction d'un argument supplémentaire (dont la valeur par défaut de la fonctionb
) et qui sera utilisé à la place de l'codée en dur de la fonctionb()
appel dansa()
:Maintenant, vous pouvez injecter (en essai) une fonction d'aide qui vient en informe le test qu'il a appelé:
OriginalL'auteur Alfe