Skip to main content

A loose data matcher to help you write Python tests

Project description

Mystique

A loose data matcher to help you write Python tests

Introduction

Imagine you need to fetch some data from a JSON API in a test. It returns a payload with 10 fields, but you only care about two of them. With Mystique you can be as rigerous or loose as you want when checking data equivalence. Check against any combination of dictionaries, lists, and objects.

Examples

from matcher import Matcher
from matcher.predicates import Is, IsEval, IsType

data = {'foo': 'baz', 'bar': [1, 3]}

# exact match
assert Matcher().matches(data,
    {'foo': 'baz', 'bar': [1, 3]})

# make sure one of the values just matches a type, instead of a value
assert Matcher().matches(data,
    {'foo': 'baz', 'bar': IsType(list[int])})

# perhaps you don't care about the type at all. just that there is a value
assert Matcher().matches(data,
    {'foo': 'baz', 'bar': Is()})

# check anything you want by writing your own logic
assert Matcher().matches(data,
    {'foo': 'baz', 'bar': IsEval(lambda x: len(x) == 2)})

# if you dont care if a key is present or not, use 'sparse_dicts' settinvg
assert Matcher(sparse_dicts=True).matches(data, {'foo': 'baz'})

See tests/ for more examples.

Requirements

  • python >= 3.7
  • python >= 3.10 recommended

Development

pip install -r requirements.txt -r requirements_dev.txt

make test

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

mystique-0.4.0.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

mystique-0.4.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file mystique-0.4.0.tar.gz.

File metadata

  • Download URL: mystique-0.4.0.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for mystique-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d289e178e0ea5a01a306b74efeed3e64b82ab1078bf4ef5da00537dd20f5f494
MD5 52bb271951ac4be014d105d833aaeffc
BLAKE2b-256 446c5fa7cd6ff0c4d5bd330b05c204ce929b27eafb01d055a76f80474375d588

See more details on using hashes here.

File details

Details for the file mystique-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: mystique-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for mystique-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e364ec606936dc977b4969eff064fce0bf3fb47993f976213a356959bb396bc
MD5 8d5179a48d70387cce8bb08d012f3399
BLAKE2b-256 ec817613cdd0ab5f388e4ea92682736292386e5e35169a5a1db770a58e5866c1

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