2010-07-01 2 views
8

J'ai un programme python avec une fonction globale qui est douloureuse à tester (il faut un grand ensemble de données pour fonctionner correctement). Quel est le meilleur moyen de contourner ce problème tout en testant les fonctions qui l'appellent?Comment se moquer d'une fonction gratuite en python?

J'ai trouvé que les travaux suivants (mais je me sens sale pour l'utiliser).

Module foo:

def PainLiesHere(): 
    return 4; #guaranteed to be random 
module test

import foo 

def BlissLiesHere(): 
    return 5 

foo.PainLiesHere = BlissLiesHere 

# test stuff 

Répondre

8

C'est une façon parfaitement bien de le faire. Tant que vous savez que BlissLiesHere ne change pas le comportement global de l'unité que vous testez ...

EDIT:

C'est ce qui se fait, sous tous les extras qu'ils fournissent, par différents types de bibliothèques moqueuses, telles que Mock, Mox, etc.

Questions connexes