planet-client-python icon indicating copy to clipboard operation
planet-client-python copied to clipboard

move unit test patching over to unittest.patch from pytest monkeypatch

Open jreiberkyle opened this issue 3 years ago • 0 comments

Go through the unit tests and replace Mock()/monkeypatch pattern with unittest.patch

Example

Change this:

@pytest.mark.parametrize(
    "pretty,expected",
    [(False, '{"key": "val"}'), (True, '{\n  "key": "val"\n}')])
def test_cli_echo_json(pretty, expected, monkeypatch):
    mock_echo = Mock()
    monkeypatch.setattr(io.click, 'echo', mock_echo)

to this:

@pytest.mark.parametrize(
    "pretty,expected",
    [(False, '{"key": "val"}'), (True, '{\n  "key": "val"\n}')])
@mock.patch('planet.cli.io.click.echo')
def test_cli_echo_json(mock_echo, pretty, expected, monkeypatch):

Original Context

from unittest.mock import Mock

import pytest

from planet.cli import io


@pytest.mark.parametrize(
    "pretty,expected",
    [(False, '{"key": "val"}'), (True, '{\n  "key": "val"\n}')])
def test_cli_echo_json(pretty, expected, monkeypatch):
    mock_echo = Mock()
    monkeypatch.setattr(io.click, 'echo', mock_echo)

    obj = {'key': 'val'}
    io.echo_json(obj, pretty)
    mock_echo.assert_called_once_with(expected)

Ref: https://github.com/planetlabs/planet-client-python/pull/385#discussion_r798899867

jreiberkyle avatar Feb 04 '22 21:02 jreiberkyle