Skip to main content

Generate test data from JSON schemata with Hypothesis

Project description

hypothesis-jsonschema

A Hypothesis strategy for generating data that matches some JSON schema. It is currently in early alpha, but you can use it if you want.

The public API consists of a just two functions:

hypothesis_jsonschema.from_schema

Takes a JSON schema and return a strategy for allowed JSON objects.

This strategy supports almost all of the schema elements described in the draft RFC as of November 2018 (draft 7), with the following exceptions:

  • For objects, the "dependencies" keyword is not supported.
  • Subschemata are not supported, i.e. the "if", "then", and "else" keywords, and the "allOf, "anyOf", "oneOf", and "not" keywords.
  • Schema reuse with "definitions" is not supported.
  • string-encoding of non-JSON data is not supported.
  • schema annotations, i.e. "title", "description", "default", "readOnly", "writeOnly", and "examples" are not supported.
  • JSON pointers are not supported.

hypothesis_jsonschema.json_schemata

A Hypothesis strategy for arbitrary JSON schemata.

This strategy may generate anything that can be handled by from_schema, and is used to provide full branch coverage when testing this package.

Supported versions

hypothesis-jsonschema does not support Python 2, because it's close to end of life and Python 3.6+ is a much nicer language. Contact me if you would like this changed and are willing to either pay for or do the work to support Python 2.

In general, 0.x versions will require very recent versions of all dependencies because I don't want to deal with compatibility workarounds.

hypothesis-jsonschema may make backwards-incompatible changes at any time before version 1.x - that's what semver means! - but I've kept the API surface small enough that this should be avoidable. The main source of breaks will be if or when schema that never really worked turn into explicit errors instead of generating values that don't quite match.

Changelog:

0.4.0 - 2018-11-25

Supports string formats (email, datetime, etc) and simple use of the "contains" keyword for arrays.

0.3.0 - 2018-11-25

Good support for all basic types. MVP.

0.2.0 - 2018-11-24

Inference for null, boolean, string, and numeric types.

0.1.0 - 2018-11-21

Stake in the ground (generate arbitrary JSON and filter it!)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypothesis-jsonschema-0.4.0.tar.gz (7.9 kB view details)

Uploaded Source

File details

Details for the file hypothesis-jsonschema-0.4.0.tar.gz.

File metadata

  • Download URL: hypothesis-jsonschema-0.4.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for hypothesis-jsonschema-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a7a5aa7d988ca321fb53b239ae2d67682b97e258f4c9d158db3de6378ca131e4
MD5 2d459c881d0ac22d4b9770c2c8dc3fb9
BLAKE2b-256 b50a0a9a3201d1faf8ae7883c4b9e40c260b262c6b6fe0fa859b862d27d9a705

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page