Skip to main content

PyHamcrest matchers extension for json schema validation

Project description

json-schema-matchers

PyHamcrest matchers extension for json schema validation

The schema should be implemented following syntax of Draft-07 to 2019-09 version. Schema example:

single_user_schema = {
    "title": "Single User Info",
    "type": "object",
    "properties": {
        "first_name": {
            "type": "string",
            "minLength": 3
        },
        "last_name": {
            "type": "string",
            "minLength": 3
        },
        "phone_number": {
            "type": "number"
        }
    },
    "required": [
        "first_name",
        "last_name",
    ]
}

all_users_info_schema = {
    "title": "All Users Info",
    "type": "array",
    "items": single_user_schema
}

Then you can use matches_json_schema matcher with all hamcrest matchers:

from hamcrest import assert_that
from json_schema_matchers.common_matcher import matches_json_schema

users_list_json_obj = [
    {
        "first_name": 'John',
        "last_name": "Johnson",
        "phone_number": 123456789
    },
    {
        "first_name": 'Jim',
        "last_name": 'Jefferson'
    }
]

assert_that(users_list_json_obj, matches_json_schema(all_users_info_schema))

assert_that(users_list_json_obj[0], matches_json_schema(single_user_schema))

In case of validation fail the matcher will return all mismatches iteratively:

users_list_json_obj = [
    {
        "first_name": 'John',
        "last_name": "Johnson",
        "phone_number": '123456789'
    },
    {
        "first_name": None,
        "last_name": 'Je'
    }
]

assert_that(users_list_json_obj, matches_json_schema(all_users_info_schema))
AssertionError: 
Expected: 
     JSON object should match schema "All Users Info"
     but: 
     mismatches occurred: 

'123456789' is not of type 'number'

Failed validating 'type' in schema['items']['properties']['phone_number']:
    {'type': 'number'}

On instance[0]['phone_number']:
    '123456789'

------------
'Je' is too short

Failed validating 'minLength' in schema['items']['properties']['last_name']:
    {'minLength': 3, 'type': 'string'}

On instance[1]['last_name']:
    'Je'

------------
None is not of type 'string'

Failed validating 'type' in schema['items']['properties']['first_name']:
    {'minLength': 3, 'type': 'string'}

On instance[1]['first_name']:
    None

------------

Dependencies:

jsonschema==3.2.0
PyHamcrest==2.0.2

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

json-schema-matchers-0.1.1.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

json_schema_matchers-0.1.1-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file json-schema-matchers-0.1.1.tar.gz.

File metadata

  • Download URL: json-schema-matchers-0.1.1.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for json-schema-matchers-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ed6d2370998fdd0f0560dfe32df782f46d30b2e75d7ed0b90267af4d24fee322
MD5 e1348713ee777d0429d7e6c9fde2e16c
BLAKE2b-256 65c55dda0e1f496ebc8ac401ad4dc10ed6449fb96b28b5faa63d5210780bf769

See more details on using hashes here.

File details

Details for the file json_schema_matchers-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: json_schema_matchers-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for json_schema_matchers-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 00b6bbde4a1e3945b7505dfd74a0d943cab8f5ac20210ae021bbcef7083841c9
MD5 b34b1ee82a4836c4227a10d1fee9695b
BLAKE2b-256 5d938f505b39fb7a23a6fe69ad2b6e0626338f02876f52e6b50b8a4973facfde

See more details on using hashes here.

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