Skip to main content

A better patch tool for python test.

Project description

https://img.shields.io/pypi/v/wonderpatch.svg

Better patch for test.

Usage

patch module method

import sys

from wonderpatch import wonder

with wonder(os).cpu_count.called_once(return_value=12345):
    assert os.cpu_count() == 12345

Use path is ok:

import sys

from wonderpatch import wonder

with wonder('os.cpu_count').called_once(return_value=12345):
    assert os.cpu_count() == 12345

patch object

from wonderpatch import wonder

class TestObject:

    def name(self):
        return self.__class__.__name__


with wonder(TestObject.name).called_once(return_value='x'):
    assert TestObject().name() == 'x'

It is also works for property:

from wonderpatch import wonder

class TestObject:

    @property
    def name(self):
        return self.__class__.__name__


with wonder(TestObject.name).called_once(return_value='x'):
    assert TestObject().name == 'x'

Multiple patch in one function

If you want to use multiple patches in one place, and do not want to write a verify long statement, use wonder.together:

from wonderpatch import wonder

with wonder.together():
    wonder(TestObject.name).called_once(return_value='x')
    wonder(TestObject.age).called_once(return_value='x')

    assert TestObject().name() == 'x'
    assert TestObject().age == 'x'

Or as a decorator:

from wonderpatch import wonder

@wonder.together
def test_name():
    wonder(TestObject.name).called_once(return_value='x')
    assert TestObject().name() == 'x'

the wonder api

  • wonder(…).then_return(value: Any)

    patch and set return value, works for called 0+ times

  • wonder(…).then_raise(exception)

    patch and set raise value, works for called 0+ times

  • wonder(…).called(times=None, min=1, max=None, return_value=_empty, side_effect=_empty, only_self=False)

    patch and set min or max times call, default is at least 1 time.

  • wonder(…).called_with(*args, **kwargs)

    patch and set called at least once with args, kwargs

  • wonder(…).called_once_with(*args, **kwargs)

    patch and set called once with args, kwargs

  • wonder(…).never_called()

    patch and set never called.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

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

wonderpatch-0.1.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

wonderpatch-0.1.0-py2.py3-none-any.whl (5.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file wonderpatch-0.1.0.tar.gz.

File metadata

  • Download URL: wonderpatch-0.1.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for wonderpatch-0.1.0.tar.gz
Algorithm Hash digest
SHA256 500526b0ead500dd58165d784ecf799e0a2060dd8627a29eff02a19109ee594e
MD5 17d88d8e3fd3ef65d9ff55980e56b8cb
BLAKE2b-256 1898b84076b61d8272c337006e48ab1f456c7f58402d20d61e2ca516d54e2aae

See more details on using hashes here.

File details

Details for the file wonderpatch-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for wonderpatch-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 49cadd5095a0182769dbaf061cb7dd54a0a77da47df14b6737a5a9f4446495e0
MD5 5e8e0494ac989e5b9085c782c4cb78a8
BLAKE2b-256 faaea5758353c9dccf87b00a32737123046d24e5ad2cbbdf2afc29d53c3c2e6a

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