Skip to main content

Non-alcoholic Mockito-style when-then utilities for unittest.mock

Project description

Mocktail

The non-alcoholic, Mockito-inspired utility for unittest.mock!

Build Status

This package provides dead-simple utilities for setting return values for mocks with a Mockito-inspired syntax:

from unittest.mock import MagicMock
from mocktail import when

my_mock = MagicMock()
when(my_mock).some_method('foo').then_return('bar')

my_mock.some_method('foo')  # 'bar'

Unlike other solutions (like mockito-python), it deliberately only works with mocks created using unittest.mock. To set the return values of arbitrary objects, combine with unittest.mock.patch.

Installation

pip install mocktail

Buyer beware!

This package -- though very minimal -- is in early alpha stage. Use with your own risk!

Contributing

Pull requests and bug reports are gladly accepted in this Github repository.

License

MIT

TODO

  • (More) matchers
  • Matcher for "rest of args / kwargs"
  • verify syntax
  • Docs
  • Some way to make "missed" matches more explicit, ie. raising an error e.g. when(...).foo(...).then_return(...).raise_missing() or when(..., raise_missing=True).foo(...).then_return(...)
  • Refactor the logic when hooking multiple then_returns for call proxies. Currently, it should work because existing side_effect is called, but it's a bit hairy
  • The matcher interface could be removed and instead we could just overwrite __eq__ for matchers

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

mocktail-0.0.4.tar.gz (3.6 kB view hashes)

Uploaded Source

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