Skip to main content

NextMock is an enhanced mock for unittest.mock.Mock

Project description

NextMock Build Status Coverage Status

NextMock is an enhanced mock for unittest.mock.Mock.

Features

  • Argument matching supported.
  • Async version (AsyncMock) provided.
  • Compatible with unittest.mock.Mock.

Usage

First install nextmock from pip:

$ pip install nextmock

then import Mock for common usage, AsyncMock for async usage:

from nextmock import Mock
from nextmock import AsyncMock

API with Examples

with_args

Return/raise stub result/error only when given args are matched.

Check out /nextmock/test/test_mock_with_args.py for comprehensive exmaples.

  • args matching

    m = Mock()
    
    m.with_args(1, 2, 3).returns(123)
    
    assert m(1, 2, 3) == 123
    assert m(3, 2, 1) != 123
    
  • kwargs matching

    m = Mock()
    
    m.with_args(a=1, b=2, c=3).returns(123)
    
    assert m(a=1, b=2, c=3) == 123
    assert m(a=3, b=2, c=1) != 123
    
  • class matching

    class Cmd:
        def __init__(self, a: int, b: str):
            self.a = a
            self.b = b
    
    m = Mock()
    
    m.with_args(Cmd(1, "123")).returns(123)
    
    assert m(Cmd(1, "123")) == 123
    assert m(Cmd(999, "321")) != 123
    
  • args matcher

    from nextmock import Arg
    
    m = Mock()
    
    m.with_args(1, 2, Arg.Any).returns(123)
    
    assert m(1, 2, 1) == 123
    assert m(1, 2, 9) == 123
    assert m(1, 2, "123") == 123
    
  • error raising

    m = Mock()
    
    m.with_args(1, 2, 3).raises(ValueError("value error"))
    
    with pytest.raises(ValueError) as e:
        m(1, 2, 3)
    
    assert str(e.value) == "value error"
    
  • enum matching (0.0.1)

    class Category(Enum):
        A = "a"
        B = "b"
    
    m = Mock()
    
    m.with_args(Category.A).returns(123)
    
    assert m(Category.A) == 123
    assert m(Category.B) != 123
    

returns

Return stub result without matching args.

m = Mock()

m.returns(123)

assert m(1, 2, 3) == 123
assert m(a=1, b=2, c=3) == 123

raises

Raise stub error without matching args.

m = Mock()

m.raises(ValueError("value error"))

with pytest.raises(ValueError) as e:
    m(1, 2, 3)

with pytest.raises(ValueError) as e:
    m(a=1, b=2, c=3)

Compatibility

Inherit behavior from unittest.mock.Mock.

Check out /nextmock/test/test_mock_compatibility.py for comprehensive examples.

m = Mock()

m.return_value = 123

assert m(1, 2, 3) == 123

m.assert_called_once()
m.assert_called_with(1, 2, 3)

License

© Chun-Yan Ho (pilagod), 2020-NOW

Released under the MIT License

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

nextmock-0.0.1.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

nextmock-0.0.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file nextmock-0.0.1.tar.gz.

File metadata

  • Download URL: nextmock-0.0.1.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.7

File hashes

Hashes for nextmock-0.0.1.tar.gz
Algorithm Hash digest
SHA256 596d5de3d9793393cd35754c615eedc1bd80edb55c090f1d53d9a58b6886adbc
MD5 2e7e13bbb38f8bf9f499d61057062961
BLAKE2b-256 3bcf5717a67c6e3242696ed4af62de9108acc2088067a92c70c9bf5ca9932912

See more details on using hashes here.

File details

Details for the file nextmock-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: nextmock-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.7

File hashes

Hashes for nextmock-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa72a9351603da28c1c705645fd03031c2cbc7c77b7cdab2566f1a8e51209a7e
MD5 72e5bf2efd18e0a5f4f3b9b8a6fe916a
BLAKE2b-256 08ac45db3c56105cec6eec947d0d11b95fcff5fd167cbe0262d34cdeae764c82

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