Я видел много примеров, где объекты 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”