Repolode
HypothesisWorks

HypothesisWorks/hypothesis

Библиотека property-based тестирования для Python, которая автоматически генерирует тестовые данные и сводит ошибки к минимальным примерам.

Звёзды
9,138
Форки
698
Открытые issues
53
Последний коммит
позавчера

Что это?

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

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

Ключевые возможности

  • 01Генерирует тестовые данные по декларативно заданным стратегиям, например для списков и целых чисел.
  • 02Упрощает входные данные, вызвавшие ошибку, до самого простого случая, который всё ещё воспроизводит баг.
  • 03Устанавливается через pip и предлагает опциональные дополнительные пакеты.

Сценарии использования

  • Проверка того, что пользовательская сортировка или парсер корректно работают с множеством сгенерированных входных данных.
  • Поиск граничных случаев, которые часто пропускают написанные вручную модульные тесты.
  • Отладка ошибок путём сведения их к минимальным воспроизводимым примерам.

Быстрый старт

  1. 1

    Установите Hypothesis с помощью pip

    pip install hypothesis

В подборках

Темы

#testing#property-based-testing#fuzzing#python

Частые вопросы

Что такое hypothesis?
Библиотека property-based тестирования для Python, которая автоматически генерирует тестовые данные и сводит ошибки к минимальным примерам. Hypothesis позволяет писать тесты, которые должны проходить для любых входных данных из заданного вами диапазона. Вместо того чтобы вручную подбирать примеры, вы описываете стратегии генерации данных, а Hypothesis случайным образом выбирает входные значения, в том числе граничные случаи, о которых разработчик может не подумать.
hypothesis можно использовать бесплатно? Какая у него лицензия?
hypothesis распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
hypothesis всё ещё поддерживается?
Активно поддерживается. Последний коммит в hypothesis — 3 нояб. 2026 г..
Для чего можно использовать hypothesis?
Проверка того, что пользовательская сортировка или парсер корректно работают с множеством сгенерированных входных данных. Поиск граничных случаев, которые часто пропускают написанные вручную модульные тесты. Отладка ошибок путём сведения их к минимальным воспроизводимым примерам.
Как установить hypothesis?
Установите Hypothesis с помощью pip: pip install hypothesis
Где скачать hypothesis?
Исходный код и инструкции по установке — на GitHub: https://github.com/HypothesisWorks/hypothesis

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Echidna — фаззер на Haskell для тестирования смарт-контрактов Ethereum: он подбирает последовательности вызовов, чтобы нарушить пользовательские инварианты или Solidity-утверждения.

3,2 тыс.+1 за неделю437HaskellAGPL-3.0Обновлён 14 часов назад

Навык для coding agent, который заставляет ИИ-агентов подтверждать корректность кода: сначала составить план тестирования, пройти серию проверок и подготовить отчёт с доказательствами.

757+4 за неделю59PythonMITОбновлён вчера

Сервис Google для непрерывного фаззинг-тестирования open source-проектов с помощью libFuzzer, AFL++ и Honggfuzz с санитайзерами для поиска уязвимостей.

Безопасность#fuzz-testing#security#vulnerability-detection
12,9 тыс.+98 за неделю3 тыс.ShellApache-2.0Обновлён 12 часов назад

Эталонная реализация автономного конвейера поиска уязвимостей и подготовки исправлений для Claude с интерактивными security skills для моделирования угроз, сканирования, триажа и внесения исправлений.

7,7 тыс.+31 за неделю638PythonOtherОбновлён 3 месяца назад