Hypothesis — это библиотека для тестирования на основе свойств (property-based testing) в языке Python. Она позволяет разработчикам описывать свойства, которым должны удовлетворять функции, и автоматически генерирует тестовые данные, включая пограничные случаи. Это подход, при котором тесты проверяют, что программа ведёт себя корректно при различных входных данных, а не только для заранее определённых примеров. Hypothesis была вдохновлена библиотекой QuickCheck, используемой в языке Haskell, и адаптирована для Python.
Основная цель Hypothesis — помочь разработчикам обнаруживать скрытые ошибки и нестандартные случаи путём генерации случайных входных данных, соответствующих заданным свойствам. Библиотека интегрируется с популярными фреймворками тестирования, такими как pytest, и предоставляет мощные инструменты для описания и проверки свойств программного кода. Hypothesis активно используется в научных и инженерных проектах, а также в промышленной разработке программного обеспечения.
- Генерация тестовых данных: автоматически создаёт разнообразные входные данные для тестируемых функций, включая пограничные случаи.
 - Декоратор @given: позволяет связывать тестовые функции с генераторами данных, описанными с помощью стратегий.
 - Стратегии данных: предоставляет обширный набор встроенных стратегий для генерации различных типов данных, таких как числа, строки, списки и другие.
 - Сужение (shrinking): при обнаружении ошибки Hypothesis пытается минимизировать входные данные, приводящие к сбою, чтобы упростить анализ причины ошибки.
 - Интеграция с pytest: поддерживает использование с фреймворком pytest, позволяя использовать возможности последнего, такие как фикстуры и параметры тестов.
 - Настройки тестов: предоставляет возможность настройки поведения тестов, включая количество примеров, таймауты и другие параметры.
 - Поддержка сложных типов данных: позволяет создавать и тестировать сложные структуры данных с помощью комбинированных стратегий.
 - Отчёты о сбоях: предоставляет подробные отчёты о сбоях, включая минимальные примеры, что облегчает диагностику и исправление ошибок.