Skip to main content

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

Project description

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.10+ 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.

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

flexmock-0.13.0.tar.gz (50.7 kB view details)

Uploaded Source

Built Distribution

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

flexmock-0.13.0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file flexmock-0.13.0.tar.gz.

File metadata

  • Download URL: flexmock-0.13.0.tar.gz
  • Upload date:
  • Size: 50.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flexmock-0.13.0.tar.gz
Algorithm Hash digest
SHA256 6829d7a0d7f746db3087da8fda62f924e52df7ece4051c2f59ad586cf5ad7977
MD5 f838a4dd8d60886d89e6e5964f92e912
BLAKE2b-256 75a69f3a7fea15d309a41e472aad643396c41ef88302ea038dc7c8c45e3bad12

See more details on using hashes here.

Provenance

The following attestation bundles were made for flexmock-0.13.0.tar.gz:

Publisher: publish.yml on flexmock/flexmock

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flexmock-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: flexmock-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flexmock-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 524f657591147d4cbdd82ce6002f361393ec439cb81ab560429926ca2fb44937
MD5 8aa806db59b5f5f068673faf0c21d413
BLAKE2b-256 cbca4d99da952769810955eed0777ae20de67cf8257ab22b294ca43cbb5531d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for flexmock-0.13.0-py3-none-any.whl:

Publisher: publish.yml on flexmock/flexmock

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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