awesome-repositories.com
Blog
MCP
awesome-repositories.com

Découvrez les meilleurs dépôts open-source grâce à notre recherche par IA.

ExplorerRecherches sélectionnéesAlternatives open sourceLogiciels auto-hébergésBlogPlan du site
ProjetÀ proposNotre méthodologiePresseServeur MCP
Mentions légalesConfidentialitéConditions d'utilisation
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
HypothesisWorks avatar

HypothesisWorks/hypothesis

0
View on GitHub↗
8,717 stars·654 forks·Python·11 vueshypothesis.works↗

Hypothesis

Hypothesis is a Python property-based testing library and data generation engine. It enables the discovery of edge cases and bugs by generating a wide range of randomized inputs based on defined strategies and shrinking complex failing examples to their smallest possible form. It also functions as a state machine testing framework to verify system behavior across sequences of interdependent operations.

The project features a fuzzing integration layer that converts raw byte buffers from coverage-guided fuzzers into structured test cases. It includes a persistence mechanism to store and synchronize failing examples across different environments, allowing for consistent reproduction of failures using serialized binary blobs.

Capabilities cover a broad spectrum of data generation, including primitive scalars, collections, temporal data, and complex composite structures. The engine supports schema-based strategy inference for database models and forms, as well as grammar-based string generation.

Hypothesis integrates with standard test runners such as Pytest to provide control over seeds, verbosity, and generation statistics.

Features

  • Deterministic Random Data Generation - Generates reproducible random inputs based on defined strategies to uncover edge cases through property-based testing.
  • Example Shrinking - Simplifies complex failing inputs by iteratively reducing data size until the smallest possible counterexample is found.
  • Generative Testing - Provides a property-based testing framework that generates random inputs to validate code invariants and uncover edge cases.
  • Primitive Generators - Generates basic scalar data types such as integers, floats, and booleans for testing.
  • Backend Abstractions - Implements a backend-agnostic architecture that decouples high-level data strategies from the underlying random value generation engine.
  • Deferred Evaluation - Handles deeply nested data using lazy definitions that resolve strategies only during the generation process.
  • Structured Random Data Generation - Creates randomized lists, tuples, and class instances by composing multiple data generation rules.
  • Test Data Generators - Creates realistic and randomized data instances, including complex structures and database models, for software testing.
  • Arbitrary Data Generation - Generates random instances of types to verify system invariants using property-based testing.
  • State Transition Testing - Executes sequences of interdependent operations to verify that a system maintains correct behavior across state transitions.
  • Schema-Driven Generators - Automatically maps type annotations and database schemas to corresponding data generation strategies during test setup.
  • State-Transition Execution - Executes randomized sequences of interdependent operations to verify system invariants across state transitions.
  • Collection Generation - Produces randomized lists, sets, tuples, and dictionaries with configurable sizes and uniqueness constraints.
  • Composite Generation Strategies - Defines complex strategies by drawing values from other strategies within a decorated function.
  • Constraint-Based Data Generation - Combines primitive generators into complex strategies to produce randomized inputs based on specified type constraints.
  • Coverage-Guided Fuzzing Integration - Converts raw bytestrings from a coverage-guided fuzzer into structured test cases to leverage data generation and shrinking.
  • Failing Case Shrinkers - Simplifies complex failing inputs into the smallest possible example to make debugging more efficient.
  • Counterexample Identification - Detects and reports the exact counterexample that causes a test to fail for precise debugging of edge cases.
  • Fuzzing Integration Layers - Converts raw byte buffers from coverage-guided fuzzers into structured test cases with shrinking support.
  • Python Libraries - Provides a comprehensive property-based testing framework specifically implemented for Python.
  • State Machine Modeling - Defines structured state machines with rules that execute in random order to verify complex system properties.
  • State Machine Testing - Verifies system behavior by executing sequences of interdependent operations in a randomized order.
  • Test Case Shrinking - Implements algorithms to simplify complex failing test inputs into the smallest possible reproducible examples.
  • Text and String Generation - Produces strings and characters based on custom alphabets, Unicode categories, codecs, or regular expressions.
  • Dynamic Input Generation - Mixes data drawing and test assertions within the same function to generate inputs dynamically based on intermediate results.
  • Database Testing - Implements a specialized storage mechanism to track and manage the history of test cases and failures.
  • Fuzzing And Analysis - Combines coverage-guided fuzzing with structured data generation to uncover vulnerabilities and crashes.
  • Strategy Combinators - Combines multiple data generation rules to create complex inputs such as lists of mixed types.
  • Binary Serialization Formats - Uses binary serialization formats to store failing test inputs for consistent reproduction across different environments.
  • Custom Generator Definitions - Defines new input generators by combining existing strategies with custom code to produce complex data shapes.
  • Django Model Generation - Produces randomized data instances that respect Django field validators and database constraints.
  • Model and Form Generation - Produces randomized instances of database models and forms by inferring strategies from field types.
  • Generation Engine Swapping - Changes the engine for primitive type generation to use methods like coverage-guided fuzzing or SMT solvers.
  • Recursive Data Generation - Produces deeply nested data structures by combining a base strategy with deferred definitions.
  • Strategy Inference - Creates data generation strategies by analyzing definitions like JSON Schema, GraphQL, or model definitions.
  • Type-to-Strategy Registries - Associates custom types with specific strategies for automatic lookup during the data generation process.
  • Strategy - Applies a transformation function to every value produced by a strategy to change its format or structure.
  • Strategy Type Annotations - Uses generic type annotations to specify the expected output type of data generation strategies.
  • Custom Generation Provider Registration - Connects custom types to specific generation strategies using entry points for automatic recognition during testing.
  • Test Runner Plugins - Connects to the Pytest runner to provide command-line control over seeds, verbosity, and generation statistics.
  • Test Example Synchronization - Shares and replays failing test inputs across different machines or pipelines using a networked database.
  • Randomized Instance Generation - Produces instances of classes or callables by drawing arguments from strategies or type annotations.
  • Input Provider Backends - Allows the creation of custom providers that control the distribution of generated inputs by overriding primitive type methods.
  • Crash Reproduction - Uses serialized binary blobs from failure reports to recreate specific failing test cases in different environments.
  • DataFrame Generation - Produces tabular data structures by defining column shapes, data types, and row generation strategies.
  • Dependent Data Generation - Generates complex data structures where one value depends on another by drawing multiple values within a single strategy.
  • External Fuzzer Integrations - Integrates with coverage-guided fuzzers by converting raw byte buffers into structured test cases.
  • Test Execution Overrides - Controls the number of generated examples, replay behavior, and verbosity for individual tests or entire suites.
  • Test Failure Debugging Tools - Re-runs tests using serialized binary blobs or fixed seeds to recreate previously observed failures.
  • Non-Deterministic Failure Detection - Identifies tests that fail on an initial run but pass when the same input is replayed.
  • Test Runners - Combines property-based data generation with traditional test fixtures by working alongside standard testing tools.
  • Test Data Management - Stores and retrieves generated values through named collections to flow data between operations during stateful runs.
  • Failed Test Rerunning - Stores failing inputs in a database to automatically replay them in subsequent test runs.
  • Generation Rule Composition - Combines multiple data sources to produce a random selection from a set of different types or constants.
  • Grammar-Based Generation - Produces strings that conform to a specified context-free grammar using EBNF specifications.
  • Guided Input Generation - Uses numeric observation metrics to steer the search toward inputs likely to falsify a property.
  • Numerical Array Generation - Produces arrays with specified data types, shapes, and element strategies for mathematical computations.
  • Parallel Test Execution - Executes test suites across multiple processes or threads to increase performance while maintaining thread safety.
  • Automated Test Code Generation - Creates property-based test source code by analyzing type annotations and signatures to verify patterns like idempotency.
  • Generated Input Filtering - Excludes invalid or unwanted test cases using predefined predicates to ensure inputs meet specific criteria.
  • Framework Integrations - Combines property-based testing with traditional parameterized test suites by working alongside standard test runners and fixtures.
  • Strategy-Level Filtering - Excludes specific values from a strategy based on a predicate to prevent invalid data from entering a test.
  • Temporal Data Generation - Produces randomized dates, times, datetimes, timedeltas, and timezone identifiers for testing.
  • Test Example Databases - Defines a custom storage backend to save, fetch, and delete failing test examples across environments.
  • Generated Example Filtering - Excludes generated examples that do not meet specific criteria using filters to ensure only valid data reaches the test logic.
  • Frameworks de test - Enables property-based testing for finding edge cases.
  • Testing Tools - Listed in the “Testing Tools” section of the Awesome Python awesome list.

Historique des stars

Graphique de l'historique des stars pour hypothesisworks/hypothesisGraphique de l'historique des stars pour hypothesisworks/hypothesis

Recherche par IA

Explorez plus de dépôts awesome

Décrivez vos besoins en langage naturel — l'IA classe des milliers de projets open source sélectionnés par pertinence.

Start searching with AI

Questions fréquentes

Que fait hypothesisworks/hypothesis ?

Hypothesis is a Python property-based testing library and data generation engine. It enables the discovery of edge cases and bugs by generating a wide range of randomized inputs based on defined strategies and shrinking complex failing examples to their smallest possible form. It also functions as a state machine testing framework to verify system behavior across sequences of interdependent operations.

Quelles sont les fonctionnalités principales de hypothesisworks/hypothesis ?

Les fonctionnalités principales de hypothesisworks/hypothesis sont : Deterministic Random Data Generation, Example Shrinking, Generative Testing, Primitive Generators, Backend Abstractions, Deferred Evaluation, Structured Random Data Generation, Test Data Generators.

Quelles sont les alternatives open-source à hypothesisworks/hypothesis ?

Les alternatives open-source à hypothesisworks/hypothesis incluent : dubzzz/fast-check — fast-check is a property-based testing framework and random data generator designed to verify software invariants by… drmaciver/hypothesis — Hypothesis is a property-based testing library for Python that automatically generates randomized input data to… purescript/purescript — PureScript is a statically typed, purely functional programming language that compiles to JavaScript. It is designed… pholser/junit-quickcheck — JUnit-quickcheck is a property-based testing framework that integrates directly into the JUnit lifecycle to verify… nelmio/alice — Alice is a PHP test data generator and fixture library used to automate the creation of large sets of fake objects and… thoughtbot/factory_bot — FactoryBot is a Ruby library for generating complex test objects and their associations, serving as a dynamic…

Alternatives open source à Hypothesis

Projets open source similaires, classés selon le nombre de fonctionnalités partagées avec Hypothesis.
  • dubzzz/fast-checkAvatar de dubzzz

    dubzzz/fast-check

    4,778Voir sur GitHub↗

    fast-check is a property-based testing framework and random data generator designed to verify software invariants by producing a wide range of randomized input data. It functions as a test data fuzzer that executes predicates against high volumes of random inputs to uncover edge cases and critical bugs. The project is distinguished by its ability to perform input-shrinking searches, which reduce complex failing inputs to their simplest form to isolate the exact cause of failure. It provides deterministic seed replay to exactly reproduce specific test failures and includes a concurrency testin

    TypeScriptfakerfuzzinggenerative-testing
    Voir sur GitHub↗4,778
  • drmaciver/hypothesisAvatar de DRMacIver

    DRMacIver/hypothesis

    8,702Voir sur GitHub↗

    Hypothesis is a property-based testing library for Python that automatically generates randomized input data to identify bugs and edge cases. It functions as an automated edge case finder and test data generator, creating diverse synthetic datasets based on defined strategies to stress test application logic. The library includes a failing case shrinker that simplifies complex failing test inputs into the smallest possible examples to accelerate debugging. It also provides a mechanism for bug reproduction simplification by reducing the size of the input that triggers a failure. The project c

    Python
    Voir sur GitHub↗8,702
  • purescript/purescriptAvatar de purescript

    purescript/purescript

    8,832Voir sur GitHub↗

    PureScript is a statically typed, purely functional programming language that compiles to JavaScript. It is designed as a cross-platform frontend language for building safe web applications, utilizing a static type system and a JavaScript compiler to ensure program correctness across browser and server environments. The language is distinguished by its emphasis on mathematical purity, featuring a robust type system with first-class support for monads. It provides a sophisticated toolset for static verification, including algebraic data types, type classes, and automatic type inference to reje

    Haskellalt-jshaskelljavascript
    Voir sur GitHub↗8,832
  • pholser/junit-quickcheckAvatar de pholser

    pholser/junit-quickcheck

    982Voir sur GitHub↗

    JUnit-quickcheck is a property-based testing framework that integrates directly into the JUnit lifecycle to verify software invariants. It functions by automatically generating random input data for test parameters, ensuring that defined logic holds true across a wide range of scenarios. The framework distinguishes itself through type-directed data generation, which matches method parameters to registered producers to create valid inputs. When a test fails, the library employs recursive shrinking logic to reduce the input to the smallest possible representation, simplifying the process of ide

    Javajavajunitproperty-based-testing
    Voir sur GitHub↗982
  • Voir les 30 alternatives à Hypothesis→