Skip to main content

Utility makes mocing more readable

Project description

pytest-when

Pytest plugin for making mocking in python more readable. Inspired by https://github.com/mockito/mockito-scala

Installation

pip install pytest-when

Usage

After installing the package a new fixture when will be available. See the following example how to use it:

class Klass1:
    def some_method(
        self,
        arg1: str,
        arg2: int,
        *,
        kwarg1: str,
        kwarg2: str,
    ) -> str:
        return "Not mocked"


def test_should_properly_patch_calls(when):
    when(Klass1, "some_method").called_with(
        "a",
        Markers.any,
        kwarg1="b",
        kwarg2=Markers.any,
    ).then_return("Mocked")

    assert (
        Klass1().some_method(
            "a",
            1,
            kwarg1="b",
            kwarg2="c",
        )
        == "Mocked"
    )
    assert (
        Klass1().some_method(
            "not mocked param",
            1,
            kwarg1="b",
            kwarg2="c",
        )
        == "Not mocked"
    )

It is possible to use 'when' with class methods and standalone functions (in this case cls parameter will become a python module).

You can patch multiple times the same object with different "called_with" parameters in a single test.

You can also patch multiple targets (cls, method)

See more examples at: test_integration

Setup for local developement

Requirements:

  1. pdm https://pdm.fming.dev/latest/#installation
  2. python3.8 (minimum supported by a tool)
pdm install

To run tests and linters use:

make test
make lint

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

pytest_when-1.0.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

pytest_when-1.0.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file pytest_when-1.0.0.tar.gz.

File metadata

  • Download URL: pytest_when-1.0.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.6.1 CPython/3.10.6

File hashes

Hashes for pytest_when-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b31984def6627b399668bf89da0d717f7004121e7bc8f573870437f07450a131
MD5 d6049caa7db24820f6f09cee19692021
BLAKE2b-256 5495fab7e31f60eb694c086446001fc4d24c0c39e37160be674bb22716945596

See more details on using hashes here.

File details

Details for the file pytest_when-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_when-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.6.1 CPython/3.10.6

File hashes

Hashes for pytest_when-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6211d8e1fc906e482d39d8c7b3728f95cbaf9e24f863bb311ce85b8a91e7f2e
MD5 b68a8564fb18b67826901aee959b20b8
BLAKE2b-256 91283f28b6db49c58fdbc3e61cda3d6c4b249a29514d65d9e529ba3b1c8c6246

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