2010-07-01 11 views
8

Ich habe ein Python-Programm mit einer globalen Funktion, die zu testen ist schmerzhaft (es benötigt eine große Datenmenge, um richtig zu funktionieren). Was ist der beste Weg, um dies zu umgehen, während Funktionen testen, die es nennen?Wie man eine freie Funktion in Python vortäuscht?

Ich habe festgestellt, dass das folgende funktioniert (aber es macht mich schmutzig, es zu benutzen).

Modul foo:

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

Modultest

import foo 

def BlissLiesHere(): 
    return 5 

foo.PainLiesHere = BlissLiesHere 

# test stuff 

Antwort

8

Dies ist ein völlig in Ordnung, Art und Weise, es zu tun. Solange Sie wissen, dass BlissLiesHere nicht das Gesamtverhalten des Gerätes ändern Sie testen ...

EDIT:

Dies ist, was, die netten Extras unter alles, was sie bieten, durch verschiedene Arten getan wird, von Mocking-Bibliotheken, wie Mock, Mox, etc.

Verwandte Themen