Как издеваться над питоном? - PullRequest
2 голосов
/ 16 ноября 2011

Библиотека Mox Mocking позволяет вам быть конкретным или агностиком по отношению к классу, который вы издеваетесь.

  1. mock = mox.CreateMock(Foo) или
  2. mock = mox.CreateMockAnything()

Документация Mox предлагает использовать первый способ (в основном, проверить тип макета) везде, где это возможно. Python как динамический язык не зависит от типа. Эти два подхода мне кажутся несовместимыми.

Итак, какой подход к издевательству более Pythonic?

1 Ответ

2 голосов
/ 16 ноября 2011

Они не одинаковы. Из документации :

Некоторые классы не предоставляют общедоступные интерфейсы; например, они могут используйте __getattribute__ для динамического создания их интерфейса. Для этих классы, вы можете использовать MockAnything. Это не обеспечивает соблюдение каких-либо интерфейс, поэтому любой вызов, который пожелает ваше сердце, является действительным. Работает в та же парадигма записи-воспроизведения-проверки. Не используйте это, если вы абсолютно необходимо! Вы можете создать MockAnything с помощью CreateMockAnything метод вашего экземпляра Mox, например:

Напротив, при создании макета с использованием CreateMock(Foo) вы получаете исключение при вызове неизвестного метода.

...