Добро пожаловать в Hypothesis!
Hypothesis представляет собой библиотеку Python для создания модульных тестов, которые попроще писать и более эффективны при запуске, обнаруживая граничные случаи в коде, который вы бы не подумали искать. Он стабильный, мощный и легко добавляется в любой существующий набор тестов.
Алгоритм его работы, позволяя вам писать тесты, которые утверждают, что что-то должно быть истинным для каждого случая, а не только то, о чём вы догадались подумать.
Нормальный модульный тест — это что-то вроде следующего:
- Подготовьте некоторые данные.
- Выполнените некоторые операции с данными.
- Подтвердите результат.
Hypothesis позволяет писать тесты, которые выглядят следующим образом:
- Для всех данных, соответствующих некоторым спецификациям.
- Выполните некоторые операции с данными.
- Подтвердите результат.
Это часто называют property based testing, и было популяризировано в библиотеке Haskell Quickcheck
Он работает путем генерации случайных данных, соответствующих вашей спецификации и проверки, что ваша функция или метод все еще держится и не падает в этом случае. Если он найдет пример, где это не так, он примет этот пример и сократит его размер, упрощая его, пока не найдет гораздо меньший пример, который все еще вызывает проблему. Затем он сохранит этот пример для последующего, так что как только он нашел проблему с вашим кодом он не забудет
этого в будущем.
Написание тестов в такой форме обычно состоит из решения о гарантиях, по которым ваш код должен делать make — properties, которые должны всегда иметь значение true
, независимо от того, что мир преподнесет вам. Примерами таких гарантий могут быть:
- Ваш код не должен генерировать исключение или должен вызывать только особый тип исключения (это работает особенно хорошо, если у вас много внутренних
assert
-ов). - При удалении объекта он больше не отображается.
- Если вы сериализуете и затем десериализуете значение, вы получите то же значение обратно.
Теперь вы знаете основы того, что делает hypothesis
, остальное в документации поможет вам понять, как и почему. Она разделена на разделы, которые вы можете увидеть в боковой панели (или в верхней части меню, если вы на мобильном телефоне). Но вероятнее всего, вы хотите начать с Quick start guide или Краткого руководства по началу работы, которое даст вам работающие примеры использования hypothesis и подробный план того, что вам нужно знать, чтобы начать тестирование кода с ним, или проверить некоторые из introductory articles.
Автор: AlekSandrDr