2010-07-01 9 views
8

Tengo un programa python con una función global que es doloroso de probar (necesita un gran conjunto de datos para funcionar correctamente). ¿Cuál es la mejor manera de evitar esto mientras pruebas las funciones que lo llaman?¿Cómo burlarse de una función gratuita en python?

He encontrado que el siguiente funciona (pero me hace sentir sucio usarlo).

módulo foo:

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

prueba de módulo de

import foo 

def BlissLiesHere(): 
    return 5 

foo.PainLiesHere = BlissLiesHere 

# test stuff 

Respuesta

8

Ésta es una manera perfectamente bien para hacerlo. Como siempre que se sepa que BlissLiesHere no cambia el comportamiento global de la unidad que se está probando ...

EDIT:

Esto es lo que se está haciendo, bajo todos los extras agradables que proporcionan, por diferentes tipos de bibliotecas burlonas, como Mock, Mox, etc.

Cuestiones relacionadas