Hypothesis

Бесплатно
Открытый исходный код

Сайт: hypothesis.works

Hypothesis — это библиотека для тестирования на основе свойств (property-based testing) в языке Python. Она позволяет разработчикам описывать свойства, которым должны удовлетворять функции, и автоматически генерирует тестовые данные, включая пограничные случаи. Это подход, при котором тесты проверяют, что программа ведёт себя корректно при различных входных данных, а не только для заранее определённых примеров. Hypothesis была вдохновлена библиотекой QuickCheck, используемой в языке Haskell, и адаптирована для Python.

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

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