Hypothesis

в 18:49, , рубрики: hypothesis, pytest, python, testing tools, unit test

Добро пожаловать в Hypothesis!

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

Алгоритм его работы, позволяя вам писать тесты, которые утверждают, что что-то должно быть истинным для каждого случая, а не только то, о чём вы догадались подумать.

Нормальный модульный тест — это что-то вроде следующего:

  1. Подготовьте некоторые данные.
  2. Выполнените некоторые операции с данными.
  3. Подтвердите результат.

Hypothesis позволяет писать тесты, которые выглядят следующим образом:

  1. Для всех данных, соответствующих некоторым спецификациям.
  2. Выполните некоторые операции с данными.
  3. Подтвердите результат.

Это часто называют property based testing, и было популяризировано в библиотеке Haskell Quickcheck

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

Написание тестов в такой форме обычно состоит из решения о гарантиях, по которым ваш код должен делать make — properties, которые должны всегда иметь значение true, независимо от того, что мир преподнесет вам. Примерами таких гарантий могут быть:

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

Теперь вы знаете основы того, что делает hypothesis, остальное в документации поможет вам понять, как и почему. Она разделена на разделы, которые вы можете увидеть в боковой панели (или в верхней части меню, если вы на мобильном телефоне). Но вероятнее всего, вы хотите начать с Quick start guide или Краткого руководства по началу работы, которое даст вам работающие примеры использования hypothesis и подробный план того, что вам нужно знать, чтобы начать тестирование кода с ним, или проверить некоторые из introductory articles.

Автор: AlekSandrDr

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js