Changelog
### 3.6.0
```
------------------
* pytest-mock no longer supports Python 3.5.
* Correct type annotations for ``mocker.patch.object`` to also include the string form.
Thanks `plannigan`_ for the PR (`235`_).
* ``reset_all`` now supports ``return_value`` and ``side_effect`` keyword arguments. Thanks `alex-marty`_ for the PR (`214`_).
.. _alex-marty: https://github.com/alex-marty
.. _plannigan: https://github.com/plannigan
.. _214: https://github.com/pytest-dev/pytest-mock/pull/214
.. _235: https://github.com/pytest-dev/pytest-mock/pull/235
```
### 3.5.1
```
------------------
* Use ``inspect.getattr_static`` instead of resorting to ``object.__getattribute__``
magic. This should better comply with objects which implement a custom descriptor
protocol. Thanks `yesthesoup`_ for the PR (`224`_).
.. _yesthesoup: https://github.com/yesthesoup
.. _224: https://github.com/pytest-dev/pytest-mock/pull/224
```
### 3.5.0
```
------------------
* Now all patch functions will emit a warning instead of raising a ``ValueError`` when used
as a context-manager. Thanks `iforapsy`_ for the PR (`221`_).
* Additionally, ``mocker.patch.context_manager`` is available when the user intends to mock
a context manager (for example ``threading.Lock`` object), which will not emit that
warning.
.. _iforapsy: https://github.com/iforapsy
.. _221: https://github.com/pytest-dev/pytest-mock/pull/221
```
### 3.4.0
```
------------------
* Add `mock.seal` alias to the `mocker` fixture (`211`_). Thanks `coiax`_ for the PR.
* Fixed spying on exceptions not covered by the ``Exception``
superclass (`215`_), like ``KeyboardInterrupt`` -- PR `216`_
by `webknjaz`_.
Before the fix, both ``spy_return`` and ``spy_exception``
were always assigned to ``None``
whenever such an exception happened. And after this fix,
``spy_exception`` is set to a correct value of an exception
that has actually happened.
.. _coiax: https://github.com/coiax
.. _webknjaz: https://github.com/sponsors/webknjaz
.. _211: https://github.com/pytest-dev/pytest-mock/pull/211
.. _215: https://github.com/pytest-dev/pytest-mock/issues/215
.. _216: https://github.com/pytest-dev/pytest-mock/pull/216
```
### 3.3.1
```
------------------
* Introduce ``MockFixture`` as an alias to ``MockerFixture``.
Before ``3.3.0``, the fixture class was named ``MockFixture``, but was renamed to ``MockerFixture`` to better
match the ``mocker`` fixture. While not officially part of the API, it was later discovered that this broke
the code of some users which already imported ``pytest_mock.MockFixture`` for type annotations, so we
decided to reintroduce the name as an alias.
Note however that this is just a stop gap measure, and new code should use ``MockerFixture`` for type annotations.
* Improved typing for ``MockerFixture.patch`` (`201`_). Thanks `srittau`_ for the PR.
.. _srittau: https://github.com/srittau
.. _201: https://github.com/pytest-dev/pytest-mock/pull/201
```
### 3.3.0
```
------------------
* ``pytest-mock`` now includes inline type annotations and exposes them to user programs. The ``mocker`` fixture returns ``pytest_mock.MockerFixture``, which can be used to annotate your tests:
.. code-block:: python
from pytest_mock import MockerFixture
def test_foo(mocker: MockerFixture) -> None:
...
The type annotations were developed against mypy version ``0.782``, the
minimum version supported at the moment. If you run into an error that you believe to be incorrect, please open an issue.
Many thanks to `staticdev`_ for providing the initial patch (`199`_).
.. _staticdev: https://github.com/staticdev
.. _199: https://github.com/pytest-dev/pytest-mock/pull/199
```
### 3.2.0
```
------------------
* `AsyncMock <https://docs.python.org/3/library/unittest.mock.html#unittest.mock.AsyncMock>`__ is now exposed in ``mocker`` and supports provides assertion introspection similar to ``Mock`` objects.
Added by `tirkarthi`_ in `197`_.
.. _tirkarthi: https://github.com/tirkarthi
.. _197: https://github.com/pytest-dev/pytest-mock/pull/197
```
### 3.1.1
```
------------------
* Fixed performance regression caused by the ``ValueError`` raised
when ``mocker`` is used as context manager (`191`_).
.. _191: https://github.com/pytest-dev/pytest-mock/issues/191
```
### 3.1.0
```
------------------
* New mocker fixtures added that allow using mocking functionality in other scopes:
* ``class_mocker``
* ``module_mocker``
* ``package_mocker``
* ``session_mocker``
Added by `scorphus`_ in `182`_.
.. _scorphus: https://github.com/scorphus
.. _182: https://github.com/pytest-dev/pytest-mock/pull/182
```
### 3.0.0
```
------------------
* Python 2.7 and 3.4 are no longer supported. Users using ``pip 9`` or later will install
a compatible version automatically.
* ``mocker.spy`` now also works with ``async def`` functions (`179`_). Thanks `frankie567`_ for the PR!
.. _179: https://github.com/pytest-dev/pytest-mock/issues/179
.. _frankie567: https://github.com/frankie567
```
### 2.0.0
```
------------------
Breaking Changes
++++++++++++++++
* ``mocker.spy`` attributes for tracking returned values and raised exceptions of its spied functions
are now called ``spy_return`` and ``spy_exception``, instead of reusing the existing
``MagicMock`` attributes ``return_value`` and ``side_effect``.
Version ``1.13`` introduced a serious regression: after a spied function using ``mocker.spy``
raises an exception, further calls to the spy will not call the spied function,
always raising the first exception instead: assigning to ``side_effect`` causes
``unittest.mock`` to behave this way (`175`_).
* The deprecated ``mock`` alias to the ``mocker`` fixture has finally been removed.
.. _175: https://github.com/pytest-dev/pytest-mock/issues/175
```
### 1.13.0
```
-------------------
* The object returned by ``mocker.spy`` now also tracks any side effect
of the spied method/function.
```
### 1.12.1
```
-------------------
* Fix error if ``mocker.patch`` is used in code where the source file
is not available, for example stale ``.pyc`` files (`169`_).
.. _169: https://github.com/pytest-dev/pytest-mock/issues/169#issuecomment-555729265
```
### 1.12.0
```
-------------------
* Now all patch functions also raise a ``ValueError`` when used
as a context-manager. Thanks `AlexGascon`_ for the PR (`168`_).
.. _AlexGascon: https://github.com/AlexGascon
.. _168: https://github.com/pytest-dev/pytest-mock/pull/168
```
### 1.11.2
```
-------------------
* The *pytest introspection follows* message is no longer shown
if there is no pytest introspection (`154`_).
Thanks `The-Compiler`_ for the report.
* ``mocker`` now raises a ``ValueError`` when used as a context-manager.
Thanks `binarymason`_ for the PR (`165`_).
.. _154: https://github.com/pytest-dev/pytest-mock/issues/154
.. _165: https://github.com/pytest-dev/pytest-mock/pull/165
.. _binarymason: https://github.com/binarymason
```
Links
- PyPI: https://pypi.org/project/pytest-mock
- Changelog: https://pyup.io/changelogs/pytest-mock/
- Repo: https://github.com/pytest-dev/pytest-mock/
This PR updates pytest-mock from 1.11.1 to 3.6.0.
Changelog
### 3.6.0 ``` ------------------ * pytest-mock no longer supports Python 3.5. * Correct type annotations for ``mocker.patch.object`` to also include the string form. Thanks `plannigan`_ for the PR (`235`_). * ``reset_all`` now supports ``return_value`` and ``side_effect`` keyword arguments. Thanks `alex-marty`_ for the PR (`214`_). .. _alex-marty: https://github.com/alex-marty .. _plannigan: https://github.com/plannigan .. _214: https://github.com/pytest-dev/pytest-mock/pull/214 .. _235: https://github.com/pytest-dev/pytest-mock/pull/235 ``` ### 3.5.1 ``` ------------------ * Use ``inspect.getattr_static`` instead of resorting to ``object.__getattribute__`` magic. This should better comply with objects which implement a custom descriptor protocol. Thanks `yesthesoup`_ for the PR (`224`_). .. _yesthesoup: https://github.com/yesthesoup .. _224: https://github.com/pytest-dev/pytest-mock/pull/224 ``` ### 3.5.0 ``` ------------------ * Now all patch functions will emit a warning instead of raising a ``ValueError`` when used as a context-manager. Thanks `iforapsy`_ for the PR (`221`_). * Additionally, ``mocker.patch.context_manager`` is available when the user intends to mock a context manager (for example ``threading.Lock`` object), which will not emit that warning. .. _iforapsy: https://github.com/iforapsy .. _221: https://github.com/pytest-dev/pytest-mock/pull/221 ``` ### 3.4.0 ``` ------------------ * Add `mock.seal` alias to the `mocker` fixture (`211`_). Thanks `coiax`_ for the PR. * Fixed spying on exceptions not covered by the ``Exception`` superclass (`215`_), like ``KeyboardInterrupt`` -- PR `216`_ by `webknjaz`_. Before the fix, both ``spy_return`` and ``spy_exception`` were always assigned to ``None`` whenever such an exception happened. And after this fix, ``spy_exception`` is set to a correct value of an exception that has actually happened. .. _coiax: https://github.com/coiax .. _webknjaz: https://github.com/sponsors/webknjaz .. _211: https://github.com/pytest-dev/pytest-mock/pull/211 .. _215: https://github.com/pytest-dev/pytest-mock/issues/215 .. _216: https://github.com/pytest-dev/pytest-mock/pull/216 ``` ### 3.3.1 ``` ------------------ * Introduce ``MockFixture`` as an alias to ``MockerFixture``. Before ``3.3.0``, the fixture class was named ``MockFixture``, but was renamed to ``MockerFixture`` to better match the ``mocker`` fixture. While not officially part of the API, it was later discovered that this broke the code of some users which already imported ``pytest_mock.MockFixture`` for type annotations, so we decided to reintroduce the name as an alias. Note however that this is just a stop gap measure, and new code should use ``MockerFixture`` for type annotations. * Improved typing for ``MockerFixture.patch`` (`201`_). Thanks `srittau`_ for the PR. .. _srittau: https://github.com/srittau .. _201: https://github.com/pytest-dev/pytest-mock/pull/201 ``` ### 3.3.0 ``` ------------------ * ``pytest-mock`` now includes inline type annotations and exposes them to user programs. The ``mocker`` fixture returns ``pytest_mock.MockerFixture``, which can be used to annotate your tests: .. code-block:: python from pytest_mock import MockerFixture def test_foo(mocker: MockerFixture) -> None: ... The type annotations were developed against mypy version ``0.782``, the minimum version supported at the moment. If you run into an error that you believe to be incorrect, please open an issue. Many thanks to `staticdev`_ for providing the initial patch (`199`_). .. _staticdev: https://github.com/staticdev .. _199: https://github.com/pytest-dev/pytest-mock/pull/199 ``` ### 3.2.0 ``` ------------------ * `AsyncMock <https://docs.python.org/3/library/unittest.mock.html#unittest.mock.AsyncMock>`__ is now exposed in ``mocker`` and supports provides assertion introspection similar to ``Mock`` objects. Added by `tirkarthi`_ in `197`_. .. _tirkarthi: https://github.com/tirkarthi .. _197: https://github.com/pytest-dev/pytest-mock/pull/197 ``` ### 3.1.1 ``` ------------------ * Fixed performance regression caused by the ``ValueError`` raised when ``mocker`` is used as context manager (`191`_). .. _191: https://github.com/pytest-dev/pytest-mock/issues/191 ``` ### 3.1.0 ``` ------------------ * New mocker fixtures added that allow using mocking functionality in other scopes: * ``class_mocker`` * ``module_mocker`` * ``package_mocker`` * ``session_mocker`` Added by `scorphus`_ in `182`_. .. _scorphus: https://github.com/scorphus .. _182: https://github.com/pytest-dev/pytest-mock/pull/182 ``` ### 3.0.0 ``` ------------------ * Python 2.7 and 3.4 are no longer supported. Users using ``pip 9`` or later will install a compatible version automatically. * ``mocker.spy`` now also works with ``async def`` functions (`179`_). Thanks `frankie567`_ for the PR! .. _179: https://github.com/pytest-dev/pytest-mock/issues/179 .. _frankie567: https://github.com/frankie567 ``` ### 2.0.0 ``` ------------------ Breaking Changes ++++++++++++++++ * ``mocker.spy`` attributes for tracking returned values and raised exceptions of its spied functions are now called ``spy_return`` and ``spy_exception``, instead of reusing the existing ``MagicMock`` attributes ``return_value`` and ``side_effect``. Version ``1.13`` introduced a serious regression: after a spied function using ``mocker.spy`` raises an exception, further calls to the spy will not call the spied function, always raising the first exception instead: assigning to ``side_effect`` causes ``unittest.mock`` to behave this way (`175`_). * The deprecated ``mock`` alias to the ``mocker`` fixture has finally been removed. .. _175: https://github.com/pytest-dev/pytest-mock/issues/175 ``` ### 1.13.0 ``` ------------------- * The object returned by ``mocker.spy`` now also tracks any side effect of the spied method/function. ``` ### 1.12.1 ``` ------------------- * Fix error if ``mocker.patch`` is used in code where the source file is not available, for example stale ``.pyc`` files (`169`_). .. _169: https://github.com/pytest-dev/pytest-mock/issues/169#issuecomment-555729265 ``` ### 1.12.0 ``` ------------------- * Now all patch functions also raise a ``ValueError`` when used as a context-manager. Thanks `AlexGascon`_ for the PR (`168`_). .. _AlexGascon: https://github.com/AlexGascon .. _168: https://github.com/pytest-dev/pytest-mock/pull/168 ``` ### 1.11.2 ``` ------------------- * The *pytest introspection follows* message is no longer shown if there is no pytest introspection (`154`_). Thanks `The-Compiler`_ for the report. * ``mocker`` now raises a ``ValueError`` when used as a context-manager. Thanks `binarymason`_ for the PR (`165`_). .. _154: https://github.com/pytest-dev/pytest-mock/issues/154 .. _165: https://github.com/pytest-dev/pytest-mock/pull/165 .. _binarymason: https://github.com/binarymason ```Links
- PyPI: https://pypi.org/project/pytest-mock - Changelog: https://pyup.io/changelogs/pytest-mock/ - Repo: https://github.com/pytest-dev/pytest-mock/