Skip to main content

Spying framework

Project description

Mockito is a spying framework originally based on the Java library with the same name. (Actually we invented the strict stubbing mode back in 2009.)

https://github.com/kaste/mockito-python/actions/workflows/test-lint-go.yml/badge.svg

Install

pip install mockito

Quick Start

90% use case is that you want to stub out a side effect.

from mockito import when, mock, unstub

when(os.path).exists('/foo').thenReturn(True)

# or:
import requests  # the famous library
# you actually want to return a Response-like obj, we'll fake it
response = mock({'status_code': 200, 'text': 'Ok'})
when(requests).get(...).thenReturn(response)

# use it
requests.get('http://google.com/')

# clean up
unstub()

Read the docs

http://mockito-python.readthedocs.io/en/latest/

Breaking changes in v2

Two functions have been renamed:

  • verifyNoMoreInteractions is deprecated. Use ensureNoUnverifiedInteractions instead.

Although verifyNoMoreInteractions is the name used in mockito for Java, it is a misnomer over there too (imo). Its docs say “Checks if any of given mocks has any unverified interaction.”, and we make that clear now in the name of the function, so you don’t need the docs to tell you what it does.

  • verifyNoUnwantedInteractions is deprecated. Use verifyExpectedInteractions instead.

The new name should make it clear that it corresponds to the usage of expect (as alternative to when).

Context managers now check the usage and any expectations (if you used expect) on exit. You can disable this check by setting the environment variable MOCKITO_CONTEXT_MANAGERS_CHECK_USAGE to “0”. Note that this does not disable the check for any explicit expectations you might have set with expect.

This roughly corresponds to the verifyStubbedInvocationsAreUsed contra the verifyExpectedInteractions functions.

New in v2

  • between now supports open ranges, e.g. between=(0, ) to check that at least 0 interactions occurred.

Development

I use uv, and if you do too: you just clone this repo to your computer, then run uv sync in the root directory. Example usage:

uv run pytest

Note: development and docs tooling target Python >=3.12, while the library itself supports older Python versions at runtime.

For docs (Python >=3.12), install only the docs dependencies with:

uv sync --no-dev --group docs

Or to install everything (all dependency groups, Python >=3.12), run:

uv sync --all-groups

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

mockito-2.0.0a6.tar.gz (199.4 kB view details)

Uploaded Source

Built Distribution

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

mockito-2.0.0a6-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file mockito-2.0.0a6.tar.gz.

File metadata

  • Download URL: mockito-2.0.0a6.tar.gz
  • Upload date:
  • Size: 199.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mockito-2.0.0a6.tar.gz
Algorithm Hash digest
SHA256 b35c9866e605d87ed54bad81ae8530059d434cd67eb2b1dcdf53c6d2b28700d4
MD5 57f7dc122dd750e15a72fd30df121bf7
BLAKE2b-256 7d0994858b15c5f299f745c43963b10f5b3d6377c577f3cf29c729acb710b6fb

See more details on using hashes here.

File details

Details for the file mockito-2.0.0a6-py3-none-any.whl.

File metadata

  • Download URL: mockito-2.0.0a6-py3-none-any.whl
  • Upload date:
  • Size: 48.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mockito-2.0.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 2d9b3ea5b17c23ca50902d71b40deb4ec7e4f8669a7f18ca9c93db98196084c3
MD5 5c1b709350b0770bb17ce3bde2a121b2
BLAKE2b-256 8f954d455f164189fc4dfe52b109645c420e0b5c96f2d7cc3c7c96983c36d02c

See more details on using hashes here.

Supported by

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