Skip to main content

Pytest Patch

An automagic replacement for monkeypatch or unittest.mock.patch that can be used on objects either directly or by name.

tests

Usage

patching objects directly

from pytest import fixture
from mock import MagicMock, sentinel

from mymodule import callee, caller  # `caller` returns `callee()`


@fixture
def callee_mock(patch):
  # returns the second argument if provided, `MagicMock()` otherwise
  return patch(callee, MagicMock(return_value=sentinel.callee))


def test_caller(callee_mock):
  assert caller() == sentinel.callee

patching objects by name

@fixture
def callee_mock(patch):
  return patch('callee')  # assumes `callee` is in `mymodule`

patching by full path

This behavior is similar to unittest.mock.patch.

@fixture
def callee_mock(patch):
  return patch('mymodule.callee')

Configuration

By default, pytest-patch assumes the following repository structure:

mymodule/
  .git/
    ...
  mymodule/
    wat/
      ermelon.py
    ...
  tests/
    */  # e.g. unit/
      mymodule/
        wat/
          test_ermelon.py
    ...

No configuration is needed if your repository matches this structure where the repository name is the same as the name of the module and your tests are in their corresponding subdirectories mirroring your module's path structure.

If the above is not the case, e.g. you have a repository with a nonmatching module name or a monorepo with multiple modules, you may specify the corresponding flags either in the pytest command line or the ini file, glob-style:

pytest --module-names=mymodule,othermodule --test-paths=tests.unit,tests.e2e.*

or (in pytest.ini)

[pytest]
module_names = mymodule othermodule
test_paths = tests.unit tests.e2e.*

Metadata

Release files for pytest-patch 0.2.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 pytest-patch 0.2.0
File Size Uploaded
pytest-patch-0.2.0.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-patch 0.2.0
File Interpreter ABI Platform
pytest_patch-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.4 kB

Release files / pytest-patch-0.2.0.tar.gz

Download URL pytest-patch-0.2.0.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ce5e2ff6bd7f4fb06dda2eedb2b78dfbe218a2fd02ce445c8678542f8309f0b5
BLAKE2b-256 checksum
How to use checksums
561ce01f8ba5902cf51e6b3dfb61a779e864b848ff0c30b74cca4f896687a8f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / pytest_patch-0.2.0-py3-none-any.whl

Download URL pytest_patch-0.2.0-py3-none-any.whl
Size 4.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca9e83547dca47136bf241aeca1a94af06608a8c9d584396334513d84a7b0f80
BLAKE2b-256 checksum
How to use checksums
91166e9c9aed15308382d457daed06db5a277519997a1d83a63765d83f650387
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

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