Что такое издевательство?

В Python 2, raw_input() возвращает строку, а input() пытается запустить вход в качестве выражения Python.

Поскольку получение строки было почти всегда тем, что вы хотели, Python 3 делает это с input(). Как говорит Свен, если вам когда-либо понадобится старое поведение, eval(input()) работает.

472
задан nes1983 22 October 2012 в 20:32
поделиться

4 ответа

Пролог: Если вы посмотрите существительное mock в словаре, вы обнаружите, что одно из определений этого слова является имитацией .


Мокинг в основном используется при модульном тестировании. Тестируемый объект может иметь зависимости от других (сложных) объектов. Чтобы изолировать поведение объекта, вы хотите заменить другие объекты макетами, имитирующими поведение реальных объектов. Это полезно, если реальные объекты нецелесообразно включать в модульный тест.

Короче говоря, насмешка - это создание объектов, имитирующих поведение реальных объектов.


Иногда вам может понадобиться различать насмешливое и заглушку . По этому поводу могут быть некоторые разногласия, но мое определение заглушки - это «минимальный» моделируемый объект. Заглушка реализует поведение, достаточное для того, чтобы тестируемый объект мог выполнить тест.

Мок похож на заглушку, но тест также проверяет, что тестируемый объект вызывает макет, как ожидалось. Часть теста - проверка правильности использования макета.

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

Если вместо этого вы хотите убедиться, что тестируемый объект записывает определенные данные в базу данных, вам придется имитировать базу данных.Затем ваш тест будет включать утверждения о том, что было написано в макете базы данных.

559
ответ дан 22 November 2019 в 22:43
поделиться

Есть много ответов о SO и хороших сообщений в Интернете о насмешках. Возможно, вы захотите начать поиск с публикации Мартина Фаулера Mocks Aren't Stubs , где он обсуждает множество идей насмешек.

В одном абзаце - имитация - это особый метод, позволяющий тестировать модуль кода без зависимости от зависимостей. В общем, то, что отличает имитацию от других методов, заключается в том, что имитирующие объекты, используемые для замены зависимостей кода, позволяют устанавливать ожидания - фиктивный объект будет знать, как он должен вызываться вашим кодом и как реагировать.


В вашем исходном вопросе упоминался TypeMock, поэтому я оставил свой ответ на него ниже:

TypeMock - это название коммерческого фреймворка для фиксации .

Он предлагает все функции бесплатных фреймворков для фиксации, таких как RhinoMocks и Moq, а также несколько более мощных опций.

Вопрос о том, нужен ли вам TypeMock или нет, очень спорный - вы можете делать большинство насмешек, которые когда-либо хотели бы, с помощью бесплатных библиотек имитации, и многие утверждают, что возможности, предлагаемые TypeMock, часто уводят вас от хорошо инкапсулированного дизайна.

В другом ответе говорилось, что «TypeMocking» на самом деле не является определенной концепцией, но может означать тип насмешки, которую предлагает TypeMock, с использованием профилировщика CLR для перехвата вызовов .Net во время выполнения, что дает гораздо большую возможность подделывать объекты (не такие требования, как необходимость интерфейсов или виртуальных методов).

30
ответ дан 22 November 2019 в 22:43
поделиться

Я бы подумал, что использование фреймворка имитации изолятора TypeMock будет TypeMocking.

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

3
ответ дан 22 November 2019 в 22:43
поделиться

Цель имитирующих типов - разделить зависимости, чтобы изолировать тест от конкретного модуля. Заглушки - это простые суррогаты, а имитаторы - суррогаты, которые могут проверять использование. Фреймворк для фиксации - это инструмент, который поможет вам создавать заглушки и макеты.

РЕДАКТИРОВАТЬ : Поскольку в исходной формулировке упоминается «насмешка типов», у меня сложилось впечатление, что это связано с TypeMock. По моему опыту, общий термин - просто «издевательство». Не стесняйтесь игнорировать приведенную ниже информацию специально о TypeMock.

TypeMock Isolator отличается от большинства других макетов фреймворков тем, что он работает с моим изменением IL на лету.Это позволяет имитировать типы и экземпляры, которые большинство других фреймворков имитировать не могут. Чтобы имитировать эти типы / экземпляры с другими фреймворками, вы должны предоставить свои собственные абстракции и имитировать их.

TypeMock предлагает большую гибкость за счет чистой среды выполнения. В качестве побочного эффекта того, как TypeMock достигает своих результатов, вы иногда получаете очень странные результаты при использовании TypeMock.

5
ответ дан 22 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: