Hypothesis

Добро пожаловать в 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.


Дальше rwdy-grsvbpcetjttrmecdkxtlk.png

© Habrahabr.ru