Рубрики
Без рубрики

Макеты Python могут быть лучше, чем просто издевательства ()

Я видел много примеров, где объекты MOCK сильно используются в тестах Python Unit. Многие люди … Теги с Python, тестированием.

Я видел много примеров, где объекты MOCK сильно используются в тестах Python Unit. Многие люди, кажется, виновны только в том числе первых нескольких пунктов Unittest.Mock Документация , в результате чего некоторые очень хрупкие тесты, которые в конечном итоге, имеющие право на разочарование.

Мой фон в первую очередь как разработчик Java, поэтому, когда я поднял Python, я был вполне шокирован тем, как, оказались, оказались, как ощущаются, если вы чувствуете то же самое, это может помочь.

Давайте поправляемся в него …

Поэтому у нас есть объект, который мы хотим использовать, возможно, это от библиотеки и изменений часто Но в настоящее время это выглядит так:

У нас также есть наш объект, который мы хотим проверить:

Похоже, нам нужно будет насмешать Someclassoutofourcontrol. Вот пример наиболее распространенных способов, которыми я вижу это, наверное, потому что это то, как много других блогов говорит вам сделать это:

Yay Mocks! Но Это хрупко … Если в нашем классе есть опечатка или изменение интерфейса в Imported Class, то тесты все еще могут пройти. Обмен импортируемый класс для этого и посмотрите, как волшебным образом ничего не изменяется:

Несмотря на то, что мы называем someclassoutofourcontrol.add () с 2 аргументами, которые тесты продолжают проходить, когда он принимает только один.

Как мы можем это исправить?

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

Теперь у нас есть издевательства, которые немного более устойчивы! Это, конечно, не изменяет потребность в других уровнях тестирования (тестирования на уровне интеграции или компонентов), но он делает наши устройства тестами более разумными.

Если это похоже, вам было бы полезно для вас, тогда я настоятельно рекомендую прочитать документацию Unittest.Mock Touchyly. Если вы получили техническое тест, и есть шанс, я буду рассматривать его, тогда я определенно рекомендую прочитать документацию, бонусные баллы, если вы публикуете коррекцию в этот блог:).

Обложка Фото Maarten Van Den Heuvel на Unspplash

Оригинал: “https://dev.to/mgough/python-mocks-can-be-better-than-just-mock-nfi”