Мы делаем это.
class FakeSomethingOrOther(object):
def __init__(self):
self._count_me= 0
def method_required_by_test(self):
return self.special_answer_required_by_test
def count_this_method(self, *args, *kw):
self._count_me += 1
Это не займет много, чтобы установить их
class TestSomething(unittest.TestCase):
def setUp(self):
self.requiredSomething = FakeSomethingOrOther()
self.requiredSomething.attribute_required_by_test= 12
self.requiredSomething.special_answer_required_by_test = 32
self.to_be_tested = ActualThing(self.requiredSomething)
Поскольку вы не требуют сложных деклараций статически проверяются типа, все, что вам нужно, это класс с правильными методами. Вы можете форсировать значения атрибутов теста тривиально.
Эти вещи действительно, очень легко писать. Вам не нужно много поддержки или библиотек.
На других языках (например, Java) очень сложно написать что-то, что будет проходить со статической проверкой времени компиляции. Поскольку Python не имеет этой проблемы, тривиально писать mocks или поддельные реализации для целей тестирования.
«Mock-объекты всегда используют проверку поведения, заглушка может идти в любом случае». Итак, заглушка - это макет? Какой смысл говорить «не издевательства», когда «заглушки» могут делать то же самое, что и mocks? Вместо того, чтобы процитировать большую статью, предоставьте фактическую разницу, которая имеет для вас значение. –