Как насмехаться над свободной функцией в python?

У меня есть программа python с глобальной функцией, которая является болезненной для тестирования (для правильной работы требуется большой набор данных). Каков наилучший способ обойти это при тестировании функций, которые его называют?

Я обнаружил, что следующие работы (но это заставляет меня чувствовать себя грязным, чтобы использовать его).

модуль foo:

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

модульный тест

 import foo def BlissLiesHere(): return 5 foo.PainLiesHere = BlissLiesHere # test stuff 

Это прекрасный способ сделать это. До тех пор, пока вы знаете, что BlissLiesHere не изменяет общее поведение устройства, которое вы тестируете …

РЕДАКТИРОВАТЬ:

Это то, что делается при всех приятных дополнениях, которые они предоставляют, различными типами насмешливых библиотек, таких как Mock , Mox и т. Д.