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

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

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

модуль foo:

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

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

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

One Solution collect form web for “Как насмехаться над свободной функцией в python?”

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

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

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

  • Как исключить макет пакета из отчета о покрытии python с использованием носетов
  • Могу ли я установить «random» с помощью unittest.mock.patch?
  • python mock - исправление метода без препятствия реализации
  • Как насмехаться с относительными путями патчей?
  • Python mock несколько возвращаемых значений
  • python: издевается над модулем
  • Как издеваться над функцией, определенной в модуле пакета?
  • Чистые Mocking удаленные серверы и API для Django Unittests
  • Python - лучший язык программирования в мире.