Библиотека Python для создания заглушек/поддельных объектов

Я ищу библиотеку заглушек python. Что-то, что можно было бы использовать для создания поддельных классов/методов в моих модульных тестах. Есть ли простой способ добиться этого в python..

Спасибо

PS: я не ищу издевательскую библиотеку, где бы вы записывали и воспроизводили ожидание.

Разница между макетами и заглушками


person StackUnderflow    schedule 12.03.2010    source источник
comment
Мок-объекты всегда используют проверку поведения, заглушка может работать в любом случае. Так заглушка - это макет? Какой смысл отказываться от насмешек, когда заглушки могут делать то же самое, что и насмешки? Вместо того, чтобы цитировать большую статью, укажите фактическую разницу, которая важна для вас.   -  person S.Lott    schedule 13.03.2010


Ответы (2)


Мы делаем это.

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 нет этой проблемы, написать макеты или поддельные реализации для целей тестирования тривиально.

person S.Lott    schedule 12.03.2010

мокер Python выглядит красиво.

Экземпляр Mocker используется для управления записью и воспроизведением ожиданий любого количества фиктивных объектов.

person hyperboreean    schedule 12.03.2010
comment
Разве это не насмешливая структура... где вы записываете ожидания и проверяете их... нет ничего проще, что просто создало бы для меня поддельную реализацию... спасибо - person StackUnderflow; 13.03.2010
comment
@StackUnderflow: у тебя какие-то волосы. Можете ли вы обновить свой вопрос, чтобы определить разницу между насмешкой и поддельной реализацией. Я думаю, что они одинаковы, но вы говорите, что они разные. - person S.Lott; 13.03.2010