Как издеваться над питоном?
Библиотека Mox Mocking позволяет вам быть конкретным или агностиком в отношении класса, над которым вы издеваетесь.
mock = mox.CreateMock(Foo)
или жеmock = mox.CreateMockAnything()
Документация Mox предлагает использовать первый способ (в основном, проверить тип макета) везде, где это возможно. Python как динамический язык не зависит от типа. Два подхода выглядят противоречивыми для меня.
Итак, какой подход к насмешкам более Pythonic?
1 ответ
Они не то же самое. Из документации:
Некоторые классы не предоставляют общедоступные интерфейсы; например, они могут использовать
__getattribute__
динамически создавать их интерфейс. Для этих классов вы можете использоватьMockAnything
, Он не навязывает никакой интерфейс, поэтому любой вызов, который пожелает ваше сердце, действителен. Он работает в той же парадигме запись-воспроизведение-проверка. Не используйте это, если вам абсолютно не нужно! Вы можете создатьMockAnything
сCreateMockAnything
Метод вашего экземпляра Mox выглядит так:
Напротив, при создании макета с использованием CreateMock(Foo)
, вы получаете исключение, когда вызывается неизвестный метод.