Skip to main content

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

Metadata

Release files for mystique 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mystique 0.4.0
File Size Uploaded
mystique-0.4.0.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mystique 0.4.0
File Interpreter ABI Platform
mystique-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.6 kB

Release files / mystique-0.4.0.tar.gz

Download URL mystique-0.4.0.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d289e178e0ea5a01a306b74efeed3e64b82ab1078bf4ef5da00537dd20f5f494
BLAKE2b-256 checksum
How to use checksums
446c5fa7cd6ff0c4d5bd330b05c204ce929b27eafb01d055a76f80474375d588
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.14

Release files / mystique-0.4.0-py3-none-any.whl

Download URL mystique-0.4.0-py3-none-any.whl
Size 3.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e364ec606936dc977b4969eff064fce0bf3fb47993f976213a356959bb396bc
BLAKE2b-256 checksum
How to use checksums
ec817613cdd0ab5f388e4ea92682736292386e5e35169a5a1db770a58e5866c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.14

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page