Schemathesis VS hypothesis

Compare Schemathesis vs hypothesis and see what are their differences.

hypothesis

Hypothesis is a powerful, flexible, and easy to use library for property-based testing. (by HypothesisWorks)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
Schemathesis hypothesis
23 20
2,085 7,254
3.0% 1.2%
9.7 9.9
9 days ago 15 days ago
Python Python
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Schemathesis

Posts with mentions or reviews of Schemathesis. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-21.
  • Ask HN: Any Good Fuzzer for gRPC?
    3 projects | news.ycombinator.com | 21 Mar 2024
    I am not aware of any tools like that, but eventually, I plan to add support for gRPC fuzzing to Schemathesis. There were already some discussions and it is more or less clear how to move forward. See https://github.com/schemathesis/schemathesis/discussions/190...
  • Show HN: Auto-generate load tests/synthetic test data from OpenAPI spec/HAR file
    1 project | news.ycombinator.com | 18 Jan 2024
    Why is AI needed for this at all? Have you heard about Schemathesis (https://github.com/schemathesis/schemathesis)?
  • A Tale of Two Kitchens - Hypermodernizing Your Python Code Base
    31 projects | dev.to | 12 Nov 2023
    SchemaThesis is a powerful tool, especially when working with web APIs, and here's how it can enhance your testing capabilities:
  • Hurl 4.0.0
    6 projects | news.ycombinator.com | 30 Jun 2023
  • OpenAPI v4 Proposal
    24 projects | news.ycombinator.com | 31 May 2023
    I'm sorry, but you have completely misunderstood the purpose of Open API.

    It is not a specification to define your business logic classes and objects -- either client or server side. Its goal is to define the interface of an API, and to provide a single source of truth that requests and responses can be validated against. It contains everything you need to know to make requests to an API; code generation is nice to have (and I use it myself, but mainly on the server side, for routing and validation), but not something required or expected from OpenAPI

    For what it's worth, my personal preferred workflow to build an API is as follows:

    1. Build the OpenAPI spec first. A smaller spec could easily be done by hand, but I prefer using a design tool like Stoplight [0]; it has the best Web-based OpenAPI (and JSON Schema) editor I have encountered, and integrates with git nearly flawlessly.

    2. Use an automated tool to generate the API code implementation. Again, a static generation tool such as datamodel-code-generator [1] (which generates Pydantic models) would suffice, but for Python I prefer the dynamic request routing and validation provided by pyapi-server [2].

    3. Finally, I use automated testing tools such as schemathesis [3] to test the implementation against the specification.

    [0] https://stoplight.io/

    [1] https://koxudaxi.github.io/datamodel-code-generator/

    [2] https://pyapi-server.readthedocs.io

    [3] https://schemathesis.readthedocs.io

  • Faster time-to-market with API-first
    12 projects | dev.to | 25 Oct 2022
    Consolidating the API specification with OpenAPI was a turning point for the project. From that moment we were able to run mock servers to build and test the UI before integrating with the backend, and we were able to validate the backend implementation against the specification. We used prism to run mock servers, and Dredd to validate the server implementation (these days I’d rather use schemathesis).
  • Show HN: Step CI – API Testing and Monitoring Made Simple
    11 projects | news.ycombinator.com | 10 Oct 2022
  • API-first development maturity framework
    3 projects | dev.to | 6 Sep 2022
    In this approach, you produce an API specification first, then you build the API against the specification, and then you validate your implementation against the specification using automated API testing tools. This is the most reliable approach for building API servers, since it’s the only one that holds the server accountable and validates the implementation against the source of truth. Unfortunately, this approach isn’t as common as it should be. One of the reasons why it isn’t so common is because it requires you to produce the API specification first, which, as we saw earlier, puts off many developers who don’t know how to work with OpenAPI. However, like I said before, generating OpenAPI specifications doesn’t need to be painful since you can use tools for that. In this approach, you use automated API testing tools to validate your implementation. Tools like Dredd and schemathesis. These tools work by parsing your API specification and automatically generating tests that ensure your implementation complies with the specification. They look at every aspect of your API implementation, including use of headers, status codes, compliance with schemas, and so on. The most advanced of these tools at the moment is schemathesis, which I highly encourage you to check out.
  • How do you manage microservices API versions and branching strategies?
    1 project | /r/devops | 17 Aug 2022
    Keep all API versions in the code Another strategy is to have all the different API versions in the same code. So you may have a folder structure that looks like this: api ├── v1 └── v2 Within the API folder, you have one folder for v1 and another one for v2. Each folder has its own schemas and routes as required by the API version they implement. If you use URL-based versioning, v1 is accessible through the example.com/v1 endpoint or the v1.example.com subdomain (whichever strategy you use), and same for v2. Deprecating a version is a simple as its corresponding folder. In any case, I'd recommend you also validate your API implementations in the CI using something like schemathesis. Schemathesis looks at the API documentation and automatically generates hundreds of tests to make sure you're using the right schemas, status codes, and so on. It works best if you design and document the API before implementing, which allows you to include OpenAPI links and other features.
  • This Week in Python
    4 projects | dev.to | 12 Aug 2022
    schemathesis – Run generated test scenarios based on your OpenAPI specification

hypothesis

Posts with mentions or reviews of hypothesis. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-12.
  • Hypothesis
    1 project | news.ycombinator.com | 1 Feb 2024
  • A Tale of Two Kitchens - Hypermodernizing Your Python Code Base
    31 projects | dev.to | 12 Nov 2023
    Hypothesis for Property-Based Testing: Hypothesis is a Python library facilitating property-based testing. It offers a distinct advantage by generating a wide array of input data based on specified properties or invariants within the code. The perks of Hypothesis include:
  • Pix2tex: Using a ViT to convert images of equations into LaTeX code
    5 projects | news.ycombinator.com | 3 Nov 2023
    But then add tests! Tests for LaTeX equations that had never been executable as code.

    https://github.com/HypothesisWorks/hypothesis :

    > Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation then generates simple and comprehensible examples that make your tests fail. This simplifies writing your tests and makes them more powerful at the same time, by letting software automate the boring bits and do them to a higher standard than a human would, freeing you to focus on the higher level test logic.

    > This sort of testing is often called "property-based testing", and the most widely known implementation of the concept is the Haskell library QuickCheck, but Hypothesis differs significantly from QuickCheck and is designed to fit idiomatically and easily into existing styles of testing that you are used to, with absolutely no familiarity with Haskell or functional programming needed.

  • pgregory.net/rapid v1.0.0, modern Go property-based testing library
    1 project | /r/golang | 12 Jun 2023
    pgregory.net/rapid is a modern Go property-based testing library initially inspired by the power and convenience of Python's Hypothesis.
  • Was muss man als nicht-technischer Quereinsteiger in Data Science *wirklich* können?
    1 project | /r/de_EDV | 13 Sep 2022
  • Python toolkits
    38 projects | /r/Python | 15 Jul 2022
    Hypothesis to generate dummy data for test.
  • Best way to test GraphQL API using Python?
    4 projects | /r/graphql | 28 Jun 2022
    To create your own test cases, I recommend you use hypothesis-graphql in combination with hypothesis. hypothesis is a property-based testing library. Property-based testing is an approach to testing in which you make assertions about the result of a test given certain conditions and parameters. For example, if you have a mutation that requires a boolean parameter, you can assert that the client will receive an error if it sends a different type. hypothesis-graphql is a GraphQL testing library that knows how to use hypothesis strategies to generate query documents.
  • Fuzzcheck (a structure-aware Rust fuzzer)
    4 projects | /r/rust | 26 Feb 2022
    The Hypothesis stateful testing code is somewhat self-contained, since it mostly builds on top of internal APIs that already existed.
  • Running C unit tests with pytest
    6 projects | news.ycombinator.com | 12 Feb 2022
    We've had a lot of success combining that approach with property-based testing (https://github.com/HypothesisWorks/hypothesis) for the query engine at backtrace: https://engineering.backtrace.io/2020-03-11-how-hard-is-it-t... .
  • Machine Readable Specifications at Scale
    4 projects | news.ycombinator.com | 26 Jan 2022
    Systems I've used for this include https://agda.readthedocs.io/en/v2.6.0.1/getting-started/what... https://coq.inria.fr https://www.idris-lang.org and https://isabelle.in.tum.de

    An easier alternative is to try disproving the statement, by executing it on thousands of examples and seeing if any fail. That gives us less confidence than a full proof, but can still be better than traditional "there exists" tests. This is called property checking or property-based testing. Systems I've used for this include https://hypothesis.works https://hackage.haskell.org/package/QuickCheck https://scalacheck.org and https://jsverify.github.io

What are some alternatives?

When comparing Schemathesis and hypothesis you can also consider the following projects:

dredd - Language-agnostic HTTP API Testing Tool

pytest - The pytest framework makes it easy to write small tests, yet scales to support complex functional testing

Robot Framework - Generic automation framework for acceptance testing and RPA

Behave - BDD, Python style.

coverage

nose2 - The successor to nose, based on unittest2

drf-openapi-tester - Test utility for validating OpenAPI documentation

nose - nose is nicer testing for python

tox - Command line driven CI frontend and development task automation tool.

mamba - The definitive testing tool for Python. Born under the banner of Behavior Driven Development (BDD).