У меня есть программа Python с глобальной функцией, которая является болезненной для тестирования (ей нужен большой набор данных для работы правильно). Что лучший способ состоит в том, чтобы обойти это при тестировании функций, которые называют его?
Я нашел, что следующие работы (но это заставляет меня чувствовать себя грязным для использования его).
нечто модуля:
def PainLiesHere():
return 4; #guaranteed to be random
тест модуля
import foo
def BlissLiesHere():
return 5
foo.PainLiesHere = BlissLiesHere
# test stuff
Это отличный способ сделать это. Пока вы знаете, что BlissLiesHere
не меняет общего поведения тестируемого вами юнита ...
РЕДАКТИРОВАТЬ:
Это то, что делается со всеми приятными дополнениями, которые они предоставляют различными типами имитирующих библиотек, такими как Mock , Mox и т. д.