Metadata-Version: 2.4
Name: mockito
Version: 2.0.4
Summary: Spying framework
Author-email: herr kaste <herr.kaste@gmail.com>
License: MIT
License-File: AUTHORS
License-File: LICENSE
Requires-Python: >=3.8
Description-Content-Type: text/x-rst

Mockito is a spying framework originally based on `the Java library with the same name
<https://github.com/mockito/mockito>`_.  (Actually *we* invented the strict stubbing mode
back in 2009.)

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


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.

- The (limited) in-order verification mode (`inorder.verify(...)`)
  is deprecated in favor of `InOrder(...)`.  `InOrder` support true ordered, cross-mock
  verification.


New in v2
=========

First-class async/await and property/descriptor support.  Chaining.  InOrder.
Enhanced `captor`, new `patch_attr` and `patch_dict`.  Refer the `changelog<https://mockito-python.readthedocs.io/en/latest/changes.html>`.


Development
===========

I use `uv <https://docs.astral.sh/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

To run the full supported Python matrix in parallel::

    uv run python scripts/run-pytest-matrix.py

To run only selected versions::

    uv run python scripts/run-pytest-matrix.py -p 3.8 -p 3.14

The matrix runner keeps per-version virtual environments in ``.runner/``
(``.venv-3.8``, etc.) so runs can execute safely in parallel while only
``outcome-*.txt`` files are wiped each run.  Use ``--recreate-envs`` to
rebuild those environments.

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

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

    uv sync --all-groups

Start the sphinx server::

    uv run sphinx-autobuild docs docs/_build/html
