Skip to main content

banner

flexmock - Mock, stub, and spy library for Python.

pypi ci documentation codecov license


Flexmock is a testing library for Python that makes it easy to create mocks, stubs, and fakes.

Features

  • Mock: Easily create mock objects and make assertions about which methods or attributes were used and arguments they were called with.
  • Spy: Proxy calls to object's original methods or attributes and make assertions based on return values or call count.
  • Fake: Generate a fake objects to be used in your tests with ease.
  • Stub: Create stub objects which replace parts of existing objects and classes with just one call.
  • No external dependencies: Flexmock is lightweight and only uses Python standard library. There are no external dependencies.
  • Simple and intuitive: Declarations are structured to read more like English sentences than API calls, so they are easy to learn and use.
  • Fully type annotated: External API is fully type annotated so it works great with static analysis tools and editor auto-completion.
  • Integrations with test runners: Integrates seamlessly with all major test runners like unittest, doctest, and pytest.
  • Python 3.11+ and PyPy3: Extensively tested to work with latest Python versions.

Installation

Install with pip:

pip install flexmock

Examples

Flexmock features smooth integration with pretty much every popular test runner, so no special setup is necessary. Simply importing flexmock into your test module is sufficient to get started with any of the following examples:

from flexmock import flexmock

Mocks

Assertions take many flavors and flexmock has many different facilities to generate them:

# Simplest is ensuring that a certain method is called
flexmock(Train).should_receive("get_tickets").once()

# Of course, it is also possible to provide a default return value
flexmock(Train).should_receive("get_destination").and_return("Paris").once()

# Or check that a method is called with specific arguments
flexmock(Train).should_receive("set_destination").with_args("Seoul").at_least().twice()

Spies

Instead of mocking, there are also times when you want to execute the actual method and simply find out how many times it was called. Flexmock uses should_call to generate this sort of assertions instead of should_receive:

# Verify that a method is called at most three times
flexmock(Train).should_call("get_tickets").at_most().times(3)

# Make sure that a method is never called with specific arguments
flexmock(Train).should_call("set_destination").with_args("Helsinki").never()

# More complex example with features like argument type and exception matching
flexmock(Train).should_call("crash").with_args(str, int).and_raise(AttributeError).once()

See more examples in the documentation.

Documentation

User guide, examples, and a full API reference is available at: https://flexmock.readthedocs.io

Contributing

Contributions are absolutely welcome and encouraged! See CONTRIBUTING.md to get started.

Metadata

Release files for flexmock 0.14.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flexmock 0.14.0
File Size Uploaded Provenance Actions
flexmock-0.14.0.tar.gz 51.3 kB With provenance Details for flexmock-0.14.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for flexmock 0.14.0
File Interpreter ABI Platform Actions
flexmock-0.14.0-py3-none-any.whl Python 3 none any Details for flexmock-0.14.0-py3-none-any.whl

Total release size: 72.0 kB

Release files / flexmock-0.14.0.tar.gz

Download URL flexmock-0.14.0.tar.gz
Size 51.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7877e1da8b648849d522e7a7357a883ae0fa032cbd7248e40afc2f27a0ac2bf4
BLAKE2b-256 checksum
How to use checksums
3ee187fb28510aba050ea034dc9554f32ab2198decd2e487d5a7f64aef9c42ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Release files / flexmock-0.14.0-py3-none-any.whl

Download URL flexmock-0.14.0-py3-none-any.whl
Size 20.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bcc80913c9808bd82a37243843251dc8bb0b8dab68c514e359b7befdcd07c402
BLAKE2b-256 checksum
How to use checksums
9bf47c0d76161f925f9e387d99644b6d28f39ba20c4bac0b44c65a0016aab79a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Security for flexmock 0.14.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for flexmock-0.14.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.14.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page