Skip to main content

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

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

If you're not sure about the file name format, learn more about wheel file names.

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.

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 files

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page