Как издеваться над свободной функцией в python? - PullRequest
8 голосов
/ 01 июля 2010

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

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

модуль foo:

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

модуль теста

import foo

def BlissLiesHere():
  return 5

foo.PainLiesHere = BlissLiesHere

# test stuff

1 Ответ

8 голосов
/ 01 июля 2010

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

EDIT:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...