3.6k stars · MIT · v4.27.4, read from /releases/latest, shown as '18 Sep' with no year and therefore 18 September 2026 — the day before the edition · Track this in Scout
It reads your API's own OpenAPI or GraphQL description and attacks it with thousands of generated requests, reporting every answer that breaks the rules the description promised.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line tool and a Python library. It takes an OpenAPI or GraphQL schema — the machine-readable document that says what each address accepts and returns — and builds test cases from it using property-based testing, where the computer invents the inputs instead of you. Every failure it finds is reduced to the smallest request that still fails.
What it is good for. Anyone with a public or internal API and no confidence in the edge cases. The problem it removes is writing hundreds of tests by hand for inputs you would never have imagined. A FastAPI backend publishes an OpenAPI description automatically, so there is genuinely nothing to prepare. Point it at the address and read the report.
- No test writing at all to begin with. The description you already publish is the input.
- When it finds a failure it shrinks it to the smallest request that still breaks, so you get a one-line reproduction rather than a wall of noise.
- MIT licence, and it is moving fast: v4.27.4 was published on 18 September 2026, the day before this edition.
- It is only as good as your description. If your schema is loose, the tests are loose.
- It sends real requests, so never point it at a live database with real customers in it. Use a copy.
- A full run against a large API takes a long time and will find the same class of problem many times before you fix the first one.
- HypothesisWorks/hypothesis
The property-based testing library for Python that Schemathesis is built on, where you write the rules yourself rather than reading them from a schema.
Track this in Scout - stoplightio/spectral
It checks the schema document itself against a style guide and never sends a request, so the two catch opposite problems.
Track this in Scout
usebruno/brunoPublished in Edition 17, the hand-driven API client where you write the requests yourself and keep them in git.
Track this in Scout
python3 -m venv venv source venv/bin/activate pip install schemathesis # Against a running FastAPI service: schemathesis run http://127.0.0.1:8000/openapi.json --url http://127.0.0.1:8000 # Keep the run short while you learn what it reports: schemathesis run http://127.0.0.1:8000/openapi.json \ --url http://127.0.0.1:8000 --max-examples 50

